From bd3a9adac366110f9b3d1353243b0652881e691c Mon Sep 17 00:00:00 2001 From: "cl349@freefall.cl.cam.ac.uk" Date: Thu, 26 Aug 2004 19:06:18 +0000 Subject: [PATCH] bitkeeper revision 1.1159.52.1 (412e34aa5HAbxIOroKVPIBaWpr-yDQ) Update to Linux 2.6.8.1 --- .rootkeys | 249 +++++++++--------- linux-2.4.27-xen-sparse/include/asm-xen/irq.h | 3 + linux-2.4.27-xen-sparse/include/linux/mm.h | 5 +- linux-2.4.27-xen-sparse/mkbuildtree | 8 +- .../arch/xen/Kconfig | 0 .../arch/xen/Kconfig.drivers | 0 .../arch/xen/Makefile | 3 +- .../arch/xen/boot/Makefile | 0 .../arch/xen/configs/xen0_defconfig | 0 .../arch/xen/configs/xenU_defconfig | 0 .../arch/xen/i386/Kconfig | 0 .../arch/xen/i386/Makefile | 3 +- .../arch/xen/i386/kernel/Makefile | 1 - .../arch/xen/i386/kernel/cpu/Makefile | 0 .../arch/xen/i386/kernel/cpu/common.c | 8 +- .../arch/xen/i386/kernel/entry.S | 0 .../arch/xen/i386/kernel/head.S | 0 .../arch/xen/i386/kernel/i386_ksyms.c | 12 +- .../arch/xen/i386/kernel/ioport.c | 0 .../arch/xen/i386/kernel/irq.c | 13 +- .../arch/xen/i386/kernel/ldt.c | 2 +- .../arch/xen/i386/kernel/pci-dma.c | 3 +- .../arch/xen/i386/kernel/process.c | 2 +- .../arch/xen/i386/kernel/setup.c | 249 ++++++++++++++++-- .../arch/xen/i386/kernel/signal.c | 26 +- .../arch/xen/i386/kernel/sysenter.c | 2 +- .../arch/xen/i386/kernel/time.c | 2 +- .../arch/xen/i386/kernel/timers/Makefile | 0 .../arch/xen/i386/kernel/timers/timer_tsc.c | 4 +- .../arch/xen/i386/kernel/traps.c | 29 +- .../arch/xen/i386/kernel/vmlinux.lds.S | 0 .../arch/xen/i386/kernel/vsyscall.S | 0 .../arch/xen/i386/kernel/vsyscall.lds | 0 .../arch/xen/i386/mm/Makefile | 0 .../arch/xen/i386/mm/fault.c | 50 +++- .../arch/xen/i386/mm/highmem.c | 0 .../arch/xen/i386/mm/hypervisor.c | 0 .../arch/xen/i386/mm/init.c | 110 +++++++- .../arch/xen/i386/mm/ioremap.c | 1 - .../arch/xen/i386/mm/pgtable.c | 2 +- .../arch/xen/i386/pci/Makefile | 0 .../arch/xen/i386/pci/direct.c | 0 .../arch/xen/i386/pci/irq.c | 2 - .../arch/xen/kernel/Makefile | 0 .../arch/xen/kernel/ctrl_if.c | 0 .../arch/xen/kernel/empty.c | 0 .../arch/xen/kernel/evtchn.c | 2 +- .../arch/xen/kernel/fixup.c | 0 .../arch/xen/kernel/process.c | 2 +- .../arch/xen/kernel/reboot.c | 0 .../arch/xen/kernel/xen_proc.c | 0 .../drivers/Makefile | 2 +- .../drivers/char/mem.c | 1 - .../drivers/char/tty_io.c | 111 +++++--- .../drivers/xen/Makefile | 0 .../drivers/xen/blkback/Makefile | 0 .../drivers/xen/blkback/blkback.c | 0 .../drivers/xen/blkback/common.h | 0 .../drivers/xen/blkback/control.c | 0 .../drivers/xen/blkback/interface.c | 0 .../drivers/xen/blkback/vbd.c | 0 .../drivers/xen/blkfront/Kconfig | 0 .../drivers/xen/blkfront/Makefile | 0 .../drivers/xen/blkfront/blkfront.c | 0 .../drivers/xen/blkfront/block.h | 0 .../drivers/xen/blkfront/vbd.c | 0 .../drivers/xen/console/Makefile | 0 .../drivers/xen/console/console.c | 5 +- .../drivers/xen/evtchn/Makefile | 0 .../drivers/xen/evtchn/evtchn.c | 0 .../drivers/xen/netback/Makefile | 0 .../drivers/xen/netback/common.h | 0 .../drivers/xen/netback/control.c | 0 .../drivers/xen/netback/interface.c | 0 .../drivers/xen/netback/netback.c | 3 +- .../drivers/xen/netfront/Kconfig | 0 .../drivers/xen/netfront/Makefile | 0 .../drivers/xen/netfront/netfront.c | 0 .../drivers/xen/privcmd/Makefile | 0 .../drivers/xen/privcmd/privcmd.c | 0 .../include/asm-xen/asm-i386/desc.h | 4 +- .../include/asm-xen/asm-i386/dma-mapping.h | 3 + .../include/asm-xen/asm-i386/e820.h | 0 .../include/asm-xen/asm-i386/fixmap.h | 0 .../include/asm-xen/asm-i386/highmem.h | 0 .../include/asm-xen/asm-i386/io.h | 0 .../asm-xen/asm-i386/mach-xen/do_timer.h | 0 .../asm-xen/asm-i386/mach-xen/io_ports.h | 0 .../asm-xen/asm-i386/mach-xen/irq_vectors.h | 0 .../asm-xen/asm-i386/mach-xen/mach_mpspec.h | 5 - .../asm-xen/asm-i386/mach-xen/mach_reboot.h | 0 .../asm-i386/mach-xen/mach_resources.h | 0 .../asm-xen/asm-i386/mach-xen/mach_time.h | 0 .../asm-xen/asm-i386/mach-xen/mach_timer.h | 0 .../asm-xen/asm-i386/mach-xen/mach_traps.h | 0 .../asm-xen/asm-i386/mach-xen/pci-functions.h | 0 .../asm-i386/mach-xen/setup_arch_post.h | 4 +- .../asm-i386/mach-xen/setup_arch_pre.h | 2 +- .../include/asm-xen/asm-i386/mmu_context.h | 0 .../include/asm-xen/asm-i386/msr.h | 9 + .../include/asm-xen/asm-i386/page.h | 12 +- .../include/asm-xen/asm-i386/param.h | 1 + .../include/asm-xen/asm-i386/pci.h | 0 .../include/asm-xen/asm-i386/pgalloc.h | 0 .../asm-xen/asm-i386/pgtable-2level-defs.h | 21 ++ .../include/asm-xen/asm-i386/pgtable-2level.h | 33 ++- .../include/asm-xen/asm-i386/pgtable.h | 132 +++++++--- .../include/asm-xen/asm-i386/processor.h | 12 +- .../include/asm-xen/asm-i386/segment.h | 0 .../include/asm-xen/asm-i386/setup.h | 3 +- .../include/asm-xen/asm-i386/synch_bitops.h | 0 .../include/asm-xen/asm-i386/system.h | 7 - .../include/asm-xen/asm-i386/timer.h | 0 .../include/asm-xen/asm-i386/tlbflush.h | 0 .../include/asm-xen/asm-i386/vga.h | 0 .../include/asm-xen/asm-i386/xor.h | 0 .../include/asm-xen/ctrl_if.h | 0 .../include/asm-xen/evtchn.h | 0 .../include/asm-xen/hypervisor.h | 0 .../include/asm-xen/multicall.h | 0 .../include/asm-xen/proc_cmd.h | 0 .../include/asm-xen/queues.h | 0 .../include/asm-xen/suspend.h | 0 .../include/asm-xen/xen_proc.h | 0 .../include/linux/bio.h | 23 +- .../include/linux/page-flags.h | 17 +- .../include/linux/skbuff.h | 115 +++++++- .../mkbuildtree | 0 .../mm/page_alloc.c | 202 ++++++++------ 129 files changed, 1047 insertions(+), 473 deletions(-) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/Kconfig (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/Kconfig.drivers (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/Makefile (93%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/boot/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/configs/xen0_defconfig (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/configs/xenU_defconfig (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/Kconfig (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/Makefile (98%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/Makefile (98%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/cpu/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/cpu/common.c (98%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/entry.S (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/head.S (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/i386_ksyms.c (94%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/ioport.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/irq.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/ldt.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/pci-dma.c (97%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/process.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/setup.c (85%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/signal.c (96%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/sysenter.c (96%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/time.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/timers/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/timers/timer_tsc.c (98%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/traps.c (97%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/vmlinux.lds.S (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/vsyscall.S (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/kernel/vsyscall.lds (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/mm/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/mm/fault.c (88%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/mm/highmem.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/mm/hypervisor.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/mm/init.c (88%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/mm/ioremap.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/mm/pgtable.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/pci/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/pci/direct.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/i386/pci/irq.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/kernel/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/kernel/ctrl_if.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/kernel/empty.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/kernel/evtchn.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/kernel/fixup.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/kernel/process.c (89%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/kernel/reboot.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/arch/xen/kernel/xen_proc.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/Makefile (98%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/char/mem.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/char/tty_io.c (97%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkback/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkback/blkback.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkback/common.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkback/control.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkback/interface.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkback/vbd.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkfront/Kconfig (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkfront/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkfront/blkfront.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkfront/block.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/blkfront/vbd.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/console/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/console/console.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/evtchn/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/evtchn/evtchn.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/netback/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/netback/common.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/netback/control.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/netback/interface.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/netback/netback.c (99%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/netfront/Kconfig (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/netfront/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/netfront/netfront.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/privcmd/Makefile (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/drivers/xen/privcmd/privcmd.c (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/desc.h (96%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/dma-mapping.h (98%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/e820.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/fixmap.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/highmem.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/io.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/do_timer.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/io_ports.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/irq_vectors.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h (60%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/mach_reboot.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/mach_resources.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/mach_time.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/mach_timer.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/mach_traps.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/pci-functions.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h (89%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h (62%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/mmu_context.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/msr.h (97%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/page.h (94%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/param.h (93%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/pci.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/pgalloc.h (100%) create mode 100644 linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/pgtable-2level.h (93%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/pgtable.h (82%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/processor.h (98%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/segment.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/setup.h (94%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/synch_bitops.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/system.h (98%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/timer.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/tlbflush.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/vga.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/asm-i386/xor.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/ctrl_if.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/evtchn.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/hypervisor.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/multicall.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/proc_cmd.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/queues.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/suspend.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/asm-xen/xen_proc.h (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/linux/bio.h (92%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/linux/page-flags.h (97%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/include/linux/skbuff.h (90%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/mkbuildtree (100%) rename {linux-2.6.7-xen-sparse => linux-2.6.8.1-xen-sparse}/mm/page_alloc.c (92%) diff --git a/.rootkeys b/.rootkeys index 78f0158385..4ca6b9d437 100644 --- a/.rootkeys +++ b/.rootkeys @@ -125,130 +125,131 @@ 409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4.27-xen-sparse/mm/page_alloc.c 3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.27-xen-sparse/mm/swapfile.c 41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.27-xen-sparse/mm/vmalloc.c -40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.7-xen-sparse/arch/xen/Kconfig -40f56237utH41NPukqHksuNf29IC9A linux-2.6.7-xen-sparse/arch/xen/Kconfig.drivers -40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.7-xen-sparse/arch/xen/Makefile -40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.7-xen-sparse/arch/xen/boot/Makefile -40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.7-xen-sparse/arch/xen/configs/xen0_defconfig -40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.7-xen-sparse/arch/xen/configs/xenU_defconfig -40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.7-xen-sparse/arch/xen/i386/Kconfig -40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.7-xen-sparse/arch/xen/i386/Makefile -40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.7-xen-sparse/arch/xen/i386/kernel/Makefile -40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.7-xen-sparse/arch/xen/i386/kernel/cpu/Makefile -40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.7-xen-sparse/arch/xen/i386/kernel/cpu/common.c -40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.7-xen-sparse/arch/xen/i386/kernel/entry.S -40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.7-xen-sparse/arch/xen/i386/kernel/head.S -40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.7-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c -40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.7-xen-sparse/arch/xen/i386/kernel/ioport.c -40f562382aC3_Gt4RG-4ZsfvDRUg3Q linux-2.6.7-xen-sparse/arch/xen/i386/kernel/irq.c -40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.7-xen-sparse/arch/xen/i386/kernel/ldt.c -4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.7-xen-sparse/arch/xen/i386/kernel/pci-dma.c -40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.7-xen-sparse/arch/xen/i386/kernel/process.c -40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.7-xen-sparse/arch/xen/i386/kernel/setup.c -40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.7-xen-sparse/arch/xen/i386/kernel/signal.c -40f56238UL9uv78ODDzMwLL9yryeFw linux-2.6.7-xen-sparse/arch/xen/i386/kernel/sysenter.c -40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.7-xen-sparse/arch/xen/i386/kernel/time.c -40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.7-xen-sparse/arch/xen/i386/kernel/timers/Makefile -40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.7-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c -40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.7-xen-sparse/arch/xen/i386/kernel/traps.c -40f56238qASEI_IOhCKWNuwFKNZrKQ linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S -40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vsyscall.S -40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vsyscall.lds -40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.7-xen-sparse/arch/xen/i386/mm/Makefile -40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.7-xen-sparse/arch/xen/i386/mm/fault.c -4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.7-xen-sparse/arch/xen/i386/mm/highmem.c -40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.7-xen-sparse/arch/xen/i386/mm/hypervisor.c -40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.7-xen-sparse/arch/xen/i386/mm/init.c -41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.7-xen-sparse/arch/xen/i386/mm/ioremap.c -40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.7-xen-sparse/arch/xen/i386/mm/pgtable.c -4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.7-xen-sparse/arch/xen/i386/pci/Makefile -4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.7-xen-sparse/arch/xen/i386/pci/direct.c -4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.7-xen-sparse/arch/xen/i386/pci/irq.c -40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.7-xen-sparse/arch/xen/kernel/Makefile -40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.7-xen-sparse/arch/xen/kernel/ctrl_if.c -40f56239pYRq5yshPTkv3ujXKc8K6g linux-2.6.7-xen-sparse/arch/xen/kernel/empty.c -40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.7-xen-sparse/arch/xen/kernel/evtchn.c -4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.7-xen-sparse/arch/xen/kernel/fixup.c -40f56239sFcjHiIRmnObRIDF-zaeKQ linux-2.6.7-xen-sparse/arch/xen/kernel/process.c -40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.7-xen-sparse/arch/xen/kernel/reboot.c -3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.7-xen-sparse/arch/xen/kernel/xen_proc.c -41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.7-xen-sparse/drivers/Makefile -4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.7-xen-sparse/drivers/char/mem.c -4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.7-xen-sparse/drivers/char/tty_io.c -40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.7-xen-sparse/drivers/xen/Makefile -410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.7-xen-sparse/drivers/xen/blkback/Makefile -4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.7-xen-sparse/drivers/xen/blkback/blkback.c -4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.7-xen-sparse/drivers/xen/blkback/common.h -4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.7-xen-sparse/drivers/xen/blkback/control.c -4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.7-xen-sparse/drivers/xen/blkback/interface.c -4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.7-xen-sparse/drivers/xen/blkback/vbd.c -40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.7-xen-sparse/drivers/xen/blkfront/Kconfig -40f562395atl9x4suKGhPkjqLOXESg linux-2.6.7-xen-sparse/drivers/xen/blkfront/Makefile -40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.7-xen-sparse/drivers/xen/blkfront/blkfront.c -40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.7-xen-sparse/drivers/xen/blkfront/block.h -40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.7-xen-sparse/drivers/xen/blkfront/vbd.c -40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.7-xen-sparse/drivers/xen/console/Makefile -3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.7-xen-sparse/drivers/xen/console/console.c -40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.7-xen-sparse/drivers/xen/evtchn/Makefile -40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.7-xen-sparse/drivers/xen/evtchn/evtchn.c -410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.7-xen-sparse/drivers/xen/netback/Makefile -4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.7-xen-sparse/drivers/xen/netback/common.h -4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.7-xen-sparse/drivers/xen/netback/control.c -4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.7-xen-sparse/drivers/xen/netback/interface.c -4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.7-xen-sparse/drivers/xen/netback/netback.c -40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.7-xen-sparse/drivers/xen/netfront/Kconfig -40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.7-xen-sparse/drivers/xen/netfront/Makefile -405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.7-xen-sparse/drivers/xen/netfront/netfront.c -4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.7-xen-sparse/drivers/xen/privcmd/Makefile -3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.7-xen-sparse/drivers/xen/privcmd/privcmd.c -40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/desc.h -4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h -40f5623anSzpuEHgiNmQ56fIRfCoaQ linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/e820.h -40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/fixmap.h -4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/highmem.h -40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/io.h -40f5623am9BzluYFuV6EQfTd-so3dA linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h -40f5623adZQ1IZGPxbDXONjyZGYuTA linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h -40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h -40f5623aMQZoYuf4ml9v69N3gu8ing linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h -40f5623a8LroVMnZ5YRzJJmIc-zHlw linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h -40f5623an3wOvFKmpIvqSxQfWzklVQ linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_resources.h -40f5623ayR1vnzfF__htza35a8Ft-g linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h -40f5623a4YdRdVzYWJzOOoqe8mnrXA linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h -40f5623aDLxmbOtUHvkWztKjAO4EjA linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h -41062ab7HMSSuaUv3_Z4agLpjSO88A linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h -40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h -40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h -4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mmu_context.h -40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/msr.h -40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/page.h -40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/param.h -41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pci.h -40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgalloc.h -40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h -40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgtable.h -40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/processor.h -40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/segment.h -40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/setup.h -40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h -40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/system.h -40f5623bSgGrvrGRpD71K-lIYqaGgg linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/timer.h -40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/tlbflush.h -41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/vga.h -40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/xor.h -40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.7-xen-sparse/include/asm-xen/ctrl_if.h -40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.7-xen-sparse/include/asm-xen/evtchn.h -40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.7-xen-sparse/include/asm-xen/hypervisor.h -40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.7-xen-sparse/include/asm-xen/multicall.h -3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.7-xen-sparse/include/asm-xen/proc_cmd.h -4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.7-xen-sparse/include/asm-xen/queues.h -3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.7-xen-sparse/include/asm-xen/suspend.h -3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.7-xen-sparse/include/asm-xen/xen_proc.h -4124d8c4aocX7A-jIbuGraWN84pxGQ linux-2.6.7-xen-sparse/include/linux/bio.h -4124f66fp5QwbDHEfoUIa7pqO5Xhag linux-2.6.7-xen-sparse/include/linux/page-flags.h -4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.7-xen-sparse/include/linux/skbuff.h -40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.7-xen-sparse/mkbuildtree -410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.7-xen-sparse/mm/page_alloc.c +40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.8.1-xen-sparse/arch/xen/Kconfig +40f56237utH41NPukqHksuNf29IC9A linux-2.6.8.1-xen-sparse/arch/xen/Kconfig.drivers +40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.8.1-xen-sparse/arch/xen/Makefile +40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.8.1-xen-sparse/arch/xen/boot/Makefile +40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.8.1-xen-sparse/arch/xen/configs/xen0_defconfig +40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.8.1-xen-sparse/arch/xen/configs/xenU_defconfig +40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.8.1-xen-sparse/arch/xen/i386/Kconfig +40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.8.1-xen-sparse/arch/xen/i386/Makefile +40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/Makefile +40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/Makefile +40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/common.c +40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/entry.S +40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/head.S +40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c +40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ioport.c +40f562382aC3_Gt4RG-4ZsfvDRUg3Q linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/irq.c +40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ldt.c +4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/pci-dma.c +40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/process.c +40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/setup.c +40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/signal.c +40f56238UL9uv78ODDzMwLL9yryeFw linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/sysenter.c +40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/time.c +40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/Makefile +40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c +40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/traps.c +40f56238qASEI_IOhCKWNuwFKNZrKQ linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S +40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.S +40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.lds +40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/Makefile +40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/fault.c +4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/highmem.c +40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c +40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/init.c +41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/ioremap.c +40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/pgtable.c +4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/Makefile +4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/direct.c +4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/irq.c +40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.8.1-xen-sparse/arch/xen/kernel/Makefile +40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.8.1-xen-sparse/arch/xen/kernel/ctrl_if.c +40f56239pYRq5yshPTkv3ujXKc8K6g linux-2.6.8.1-xen-sparse/arch/xen/kernel/empty.c +40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.8.1-xen-sparse/arch/xen/kernel/evtchn.c +4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.8.1-xen-sparse/arch/xen/kernel/fixup.c +40f56239sFcjHiIRmnObRIDF-zaeKQ linux-2.6.8.1-xen-sparse/arch/xen/kernel/process.c +40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.8.1-xen-sparse/arch/xen/kernel/reboot.c +3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.8.1-xen-sparse/arch/xen/kernel/xen_proc.c +41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.8.1-xen-sparse/drivers/Makefile +4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.8.1-xen-sparse/drivers/char/mem.c +4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.8.1-xen-sparse/drivers/char/tty_io.c +40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.8.1-xen-sparse/drivers/xen/Makefile +410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.8.1-xen-sparse/drivers/xen/blkback/Makefile +4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.8.1-xen-sparse/drivers/xen/blkback/blkback.c +4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.8.1-xen-sparse/drivers/xen/blkback/common.h +4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.8.1-xen-sparse/drivers/xen/blkback/control.c +4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.8.1-xen-sparse/drivers/xen/blkback/interface.c +4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.8.1-xen-sparse/drivers/xen/blkback/vbd.c +40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Kconfig +40f562395atl9x4suKGhPkjqLOXESg linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Makefile +40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/blkfront.c +40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/block.h +40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/vbd.c +40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.8.1-xen-sparse/drivers/xen/console/Makefile +3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.8.1-xen-sparse/drivers/xen/console/console.c +40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/Makefile +40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/evtchn.c +410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.8.1-xen-sparse/drivers/xen/netback/Makefile +4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.8.1-xen-sparse/drivers/xen/netback/common.h +4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.8.1-xen-sparse/drivers/xen/netback/control.c +4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.8.1-xen-sparse/drivers/xen/netback/interface.c +4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.8.1-xen-sparse/drivers/xen/netback/netback.c +40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Kconfig +40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Makefile +405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.8.1-xen-sparse/drivers/xen/netfront/netfront.c +4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/Makefile +3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/privcmd.c +40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/desc.h +4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h +40f5623anSzpuEHgiNmQ56fIRfCoaQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/e820.h +40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/fixmap.h +4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/highmem.h +40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/io.h +40f5623am9BzluYFuV6EQfTd-so3dA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h +40f5623adZQ1IZGPxbDXONjyZGYuTA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h +40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h +40f5623aMQZoYuf4ml9v69N3gu8ing linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h +40f5623a8LroVMnZ5YRzJJmIc-zHlw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h +40f5623an3wOvFKmpIvqSxQfWzklVQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_resources.h +40f5623ayR1vnzfF__htza35a8Ft-g linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h +40f5623a4YdRdVzYWJzOOoqe8mnrXA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h +40f5623aDLxmbOtUHvkWztKjAO4EjA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h +41062ab7HMSSuaUv3_Z4agLpjSO88A linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h +40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h +40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h +4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mmu_context.h +40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/msr.h +40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/page.h +40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/param.h +41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pci.h +40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgalloc.h +412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h +40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h +40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable.h +40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/processor.h +40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/segment.h +40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/setup.h +40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h +40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/system.h +40f5623bSgGrvrGRpD71K-lIYqaGgg linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/timer.h +40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/tlbflush.h +41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/vga.h +40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/xor.h +40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.8.1-xen-sparse/include/asm-xen/ctrl_if.h +40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.8.1-xen-sparse/include/asm-xen/evtchn.h +40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.8.1-xen-sparse/include/asm-xen/hypervisor.h +40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.8.1-xen-sparse/include/asm-xen/multicall.h +3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.8.1-xen-sparse/include/asm-xen/proc_cmd.h +4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.8.1-xen-sparse/include/asm-xen/queues.h +3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.8.1-xen-sparse/include/asm-xen/suspend.h +3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.8.1-xen-sparse/include/asm-xen/xen_proc.h +4124d8c4aocX7A-jIbuGraWN84pxGQ linux-2.6.8.1-xen-sparse/include/linux/bio.h +4124f66fp5QwbDHEfoUIa7pqO5Xhag linux-2.6.8.1-xen-sparse/include/linux/page-flags.h +4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.8.1-xen-sparse/include/linux/skbuff.h +40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.8.1-xen-sparse/mkbuildtree +410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.8.1-xen-sparse/mm/page_alloc.c 40e1b09db5mN69Ijj0X_Eol-S7dXiw tools/Make.defs 3f776bd1Hy9rn69ntXBhPReUFw9IEA tools/Makefile 4124b307nRyK3dhn1hAsvrY76NuV3g tools/check/Makefile diff --git a/linux-2.4.27-xen-sparse/include/asm-xen/irq.h b/linux-2.4.27-xen-sparse/include/asm-xen/irq.h index 668195e9ca..45e12cbde1 100644 --- a/linux-2.4.27-xen-sparse/include/asm-xen/irq.h +++ b/linux-2.4.27-xen-sparse/include/asm-xen/irq.h @@ -56,4 +56,7 @@ extern void enable_irq(unsigned int); extern void irq_suspend(void); extern void irq_resume(void); + +#define CPU_MASK_NONE 0 + #endif /* _ASM_IRQ_H */ diff --git a/linux-2.4.27-xen-sparse/include/linux/mm.h b/linux-2.4.27-xen-sparse/include/linux/mm.h index b24c6d6163..523bcffd53 100644 --- a/linux-2.4.27-xen-sparse/include/linux/mm.h +++ b/linux-2.4.27-xen-sparse/include/linux/mm.h @@ -332,7 +332,10 @@ typedef struct page { /* A foreign page uses a custom destructor rather than the buddy allocator. */ #ifdef CONFIG_FOREIGN_PAGES #define PageForeign(page) test_bit(PG_foreign, &(page)->flags) -#define SetPageForeign(page) set_bit(PG_foreign, &(page)->flags) +#define SetPageForeign(page, dtor) do { \ + set_bit(PG_foreign, &(page)->flags); \ + (page)->mapping = (void *)dtor; \ +} while (0) #define ClearPageForeign(page) clear_bit(PG_foreign, &(page)->flags) #define PageForeignDestructor(page) \ ( (void (*) (struct page *)) (page)->mapping ) diff --git a/linux-2.4.27-xen-sparse/mkbuildtree b/linux-2.4.27-xen-sparse/mkbuildtree index ca407be27d..3dec55c7bd 100755 --- a/linux-2.4.27-xen-sparse/mkbuildtree +++ b/linux-2.4.27-xen-sparse/mkbuildtree @@ -78,7 +78,7 @@ relative_lndir () # Get absolute path to the destination directory pushd . >/dev/null -cd ${1} +cd ${1} || { echo "cannot cd to ${1}"; exit 1; } AD=$PWD popd >/dev/null @@ -93,7 +93,7 @@ RS=$DESTPATH for i in `find . -type f -o -type l` ; do rm -f ${AD}/${i#./} ; done # We now work from the destination directory -cd ${AD} +cd ${AD} || { echo "cannot cd to ${AD}"; exit 1; } # Remove old symlinks for i in `find . -type l`; do rm -f $i; done @@ -102,7 +102,9 @@ for i in `find . -type l`; do rm -f $i; done relative_lndir ${RS} rm -f mkbuildtree -LINUX_26=${RS}/../linux-2.6.7-xen-sparse +set ${RS}/../linux-2.6.*-xen-sparse +[ "$1" == "${RS}/../linux-2.6.*-xen-parse" ] && { echo "no Linux 2.6 sparse tree at ${RS}/../linux-2.6.*-xen-sparse"; exit 1; } +LINUX_26="$1" # Create links to the shared definitions of the hypervisor interface diff --git a/linux-2.6.7-xen-sparse/arch/xen/Kconfig b/linux-2.6.8.1-xen-sparse/arch/xen/Kconfig similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/Kconfig rename to linux-2.6.8.1-xen-sparse/arch/xen/Kconfig diff --git a/linux-2.6.7-xen-sparse/arch/xen/Kconfig.drivers b/linux-2.6.8.1-xen-sparse/arch/xen/Kconfig.drivers similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/Kconfig.drivers rename to linux-2.6.8.1-xen-sparse/arch/xen/Kconfig.drivers diff --git a/linux-2.6.7-xen-sparse/arch/xen/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/Makefile similarity index 93% rename from linux-2.6.7-xen-sparse/arch/xen/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/Makefile index e3772803d3..e6d2270de2 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/Makefile +++ b/linux-2.6.8.1-xen-sparse/arch/xen/Makefile @@ -12,7 +12,8 @@ # Copyright (C) 2004 by Christian Limpach # -override EXTRAVERSION:=$(subst linux-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL),,$(shell basename $(TOPDIR)))$(EXTRAVERSION) +EXTRAEXTRAVERSION=$(subst $(findstring $(EXTRAVERSION),$(shell basename $(TOPDIR))),,$(EXTRAVERSION)) +override EXTRAVERSION:=$(subst linux-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL),,$(shell basename $(TOPDIR)))$(EXTRAEXTRAVERSION) XENARCH := $(subst ",,$(CONFIG_XENARCH)) diff --git a/linux-2.6.7-xen-sparse/arch/xen/boot/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/boot/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/boot/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/boot/Makefile diff --git a/linux-2.6.7-xen-sparse/arch/xen/configs/xen0_defconfig b/linux-2.6.8.1-xen-sparse/arch/xen/configs/xen0_defconfig similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/configs/xen0_defconfig rename to linux-2.6.8.1-xen-sparse/arch/xen/configs/xen0_defconfig diff --git a/linux-2.6.7-xen-sparse/arch/xen/configs/xenU_defconfig b/linux-2.6.8.1-xen-sparse/arch/xen/configs/xenU_defconfig similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/configs/xenU_defconfig rename to linux-2.6.8.1-xen-sparse/arch/xen/configs/xenU_defconfig diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/Kconfig b/linux-2.6.8.1-xen-sparse/arch/xen/i386/Kconfig similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/Kconfig rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/Kconfig diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/i386/Makefile similarity index 98% rename from linux-2.6.7-xen-sparse/arch/xen/i386/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/Makefile index aa0870f67b..a95f970f01 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/Makefile +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/Makefile @@ -68,7 +68,8 @@ head-y := arch/xen/i386/kernel/head.o arch/xen/i386/kernel/init_task.o libs-y += arch/i386/lib/ core-y += arch/xen/i386/kernel/ \ - arch/xen/i386/mm/ + arch/xen/i386/mm/ \ + arch/i386/crypto/ # \ # arch/xen/$(mcore-y)/ drivers-$(CONFIG_MATH_EMULATION) += arch/i386/math-emu/ diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/Makefile similarity index 98% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/Makefile index c991148dda..dd230469d1 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/Makefile +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/Makefile @@ -40,7 +40,6 @@ c-obj-$(CONFIG_ACPI_SRAT) += srat.o c-obj-$(CONFIG_HPET_TIMER) += time_hpet.o c-obj-$(CONFIG_EFI) += efi.o efi_stub.o c-obj-$(CONFIG_EARLY_PRINTK) += early_printk.o -c-obj-$(CONFIG_X86_STD_RESOURCES) += std_resources.o EXTRA_AFLAGS := -traditional diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/cpu/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/cpu/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/Makefile diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/cpu/common.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/common.c similarity index 98% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/cpu/common.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/common.c index 2a659872ba..6620406951 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/cpu/common.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/cpu/common.c @@ -330,7 +330,7 @@ void __init identify_cpu(struct cpuinfo_x86 *c) generic_identify(c); - printk(KERN_DEBUG "CPU: After generic identify, caps: %08lx %08lx %08lx %08lx\n", + printk(KERN_DEBUG "CPU: After generic identify, caps: %08lx %08lx %08lx %08lx\n", c->x86_capability[0], c->x86_capability[1], c->x86_capability[2], @@ -339,7 +339,7 @@ void __init identify_cpu(struct cpuinfo_x86 *c) if (this_cpu->c_identify) { this_cpu->c_identify(c); - printk(KERN_DEBUG "CPU: After vendor identify, caps: %08lx %08lx %08lx %08lx\n", + printk(KERN_DEBUG "CPU: After vendor identify, caps: %08lx %08lx %08lx %08lx\n", c->x86_capability[0], c->x86_capability[1], c->x86_capability[2], @@ -394,7 +394,7 @@ void __init identify_cpu(struct cpuinfo_x86 *c) /* Now the feature flags better reflect actual CPU features! */ - printk(KERN_DEBUG "CPU: After all inits, caps: %08lx %08lx %08lx %08lx\n", + printk(KERN_DEBUG "CPU: After all inits, caps: %08lx %08lx %08lx %08lx\n", c->x86_capability[0], c->x86_capability[1], c->x86_capability[2], @@ -474,7 +474,6 @@ void early_cpu_detect(void); void __init early_cpu_init(void) { - early_cpu_detect(); intel_cpu_init(); cyrix_init_cpu(); nsc_init_cpu(); @@ -484,6 +483,7 @@ void __init early_cpu_init(void) rise_init_cpu(); nexgen_init_cpu(); umc_init_cpu(); + early_cpu_detect(); #ifdef CONFIG_DEBUG_PAGEALLOC /* pse is not compatible with on-the-fly unmapping, diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/entry.S b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/entry.S similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/entry.S rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/entry.S diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/head.S b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/head.S similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/head.S rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/head.S diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c similarity index 94% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c index 11f2eff9ab..b598dcf360 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -175,24 +174,15 @@ EXPORT_SYMBOL(rtc_lock); EXPORT_SYMBOL_GPL(set_nmi_callback); EXPORT_SYMBOL_GPL(unset_nmi_callback); - -#undef memcpy -#undef memset + #undef memcmp -extern void * memset(void *,int,__kernel_size_t); -extern void * memcpy(void *,const void *,__kernel_size_t); extern int memcmp(const void *,const void *,__kernel_size_t); -EXPORT_SYMBOL_NOVERS(memcpy); -EXPORT_SYMBOL_NOVERS(memset); EXPORT_SYMBOL_NOVERS(memcmp); #ifdef CONFIG_HAVE_DEC_LOCK EXPORT_SYMBOL(atomic_dec_and_lock); #endif -extern int is_sony_vaio_laptop; -EXPORT_SYMBOL(is_sony_vaio_laptop); - EXPORT_SYMBOL(__PAGE_KERNEL); #ifdef CONFIG_HIGHMEM diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/ioport.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ioport.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/ioport.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ioport.c diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/irq.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/irq.c similarity index 99% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/irq.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/irq.c index b79c689474..758245e28e 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/irq.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/irq.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -652,7 +651,7 @@ int request_irq(unsigned int irq, action->handler = handler; action->flags = irqflags; - action->mask = 0; + cpus_clear(action->mask); action->name = devname; action->next = NULL; action->dev_id = dev_id; @@ -1098,7 +1097,7 @@ void init_irq_proc (void) int i; /* create /proc/irq */ - root_irq_dir = proc_mkdir("irq", 0); + root_irq_dir = proc_mkdir("irq", NULL); /* create /proc/irq/prof_cpu_mask */ entry = create_proc_entry("prof_cpu_mask", 0600, root_irq_dir); @@ -1120,8 +1119,12 @@ void init_irq_proc (void) #ifdef CONFIG_4KSTACKS -static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned"))); -static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned"))); +/* + * These should really be __section__(".bss.page_aligned") as well, but + * gcc's 3.0 and earlier don't handle that correctly. + */ +static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE))); +static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE))); /* * allocate per-cpu stacks for hardirq and for softirq processing diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/ldt.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ldt.c similarity index 99% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/ldt.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ldt.c index 0c6332ce6b..9899654926 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/ldt.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/ldt.c @@ -66,7 +66,7 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload) #ifdef CONFIG_SMP mask = cpumask_of_cpu(smp_processor_id()); if (!cpus_equal(current->mm->cpu_vm_mask, mask)) - smp_call_function(flush_ldt, 0, 1, 1); + smp_call_function(flush_ldt, NULL, 1, 1); preempt_enable(); #endif } diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/pci-dma.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/pci-dma.c similarity index 97% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/pci-dma.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/pci-dma.c index 46702c5795..6135d057b2 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/pci-dma.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/pci-dma.c @@ -40,7 +40,8 @@ void *dma_alloc_coherent(struct device *dev, size_t size, gfp |= GFP_DMA; #endif - ret = (void *)vstart = __get_free_pages(gfp, order); + vstart = __get_free_pages(gfp, order); + ret = (void *)vstart; if (ret == NULL) return ret; diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/process.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/process.c similarity index 99% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/process.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/process.c index f519ba1c5e..11cba27734 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/process.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/process.c @@ -344,7 +344,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, unsigned long eflags; childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p->thread_info)) - 1; - struct_cpy(childregs, regs); + *childregs = *regs; childregs->eax = 0; childregs->esp = esp; p->set_child_tid = p->clear_child_tid = NULL; diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/setup.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/setup.c similarity index 85% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/setup.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/setup.c index e2999268a7..1a1c3376d9 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/setup.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/setup.c @@ -47,14 +47,12 @@ #include #include #include -#include +#include #include #include "setup_arch_pre.h" int disable_pse __initdata = 0; -static inline char * __init machine_specific_memory_setup(void); - /* * Machine setup.. */ @@ -125,12 +123,210 @@ unsigned long saved_videomode; #define RAMDISK_LOAD_FLAG 0x4000 static char command_line[COMMAND_LINE_SIZE]; - char saved_command_line[COMMAND_LINE_SIZE]; unsigned char __initdata boot_params[PARAM_SIZE]; -static struct resource code_resource = { "Kernel code", 0x100000, 0 }; -static struct resource data_resource = { "Kernel data", 0, 0 }; +static struct resource data_resource = { + .name = "Kernel data", + .start = 0, + .end = 0, + .flags = IORESOURCE_BUSY | IORESOURCE_MEM +}; + +static struct resource code_resource = { + .name = "Kernel code", + .start = 0, + .end = 0, + .flags = IORESOURCE_BUSY | IORESOURCE_MEM +}; + +#ifdef CONFIG_XEN_PRIVILEGED_GUEST +static struct resource system_rom_resource = { + .name = "System ROM", + .start = 0xf0000, + .end = 0xfffff, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +}; + +static struct resource extension_rom_resource = { + .name = "Extension ROM", + .start = 0xe0000, + .end = 0xeffff, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +}; + +static struct resource adapter_rom_resources[] = { { + .name = "Adapter ROM", + .start = 0xc8000, + .end = 0, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +}, { + .name = "Adapter ROM", + .start = 0, + .end = 0, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +}, { + .name = "Adapter ROM", + .start = 0, + .end = 0, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +}, { + .name = "Adapter ROM", + .start = 0, + .end = 0, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +}, { + .name = "Adapter ROM", + .start = 0, + .end = 0, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +}, { + .name = "Adapter ROM", + .start = 0, + .end = 0, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +} }; + +#define ADAPTER_ROM_RESOURCES \ + (sizeof adapter_rom_resources / sizeof adapter_rom_resources[0]) + +static struct resource video_rom_resource = { + .name = "Video ROM", + .start = 0xc0000, + .end = 0xc7fff, + .flags = IORESOURCE_BUSY | IORESOURCE_READONLY | IORESOURCE_MEM +}; +#endif + +static struct resource video_ram_resource = { + .name = "Video RAM area", + .start = 0xa0000, + .end = 0xbffff, + .flags = IORESOURCE_BUSY | IORESOURCE_MEM +}; + +static struct resource standard_io_resources[] = { { + .name = "dma1", + .start = 0x0000, + .end = 0x001f, + .flags = IORESOURCE_BUSY | IORESOURCE_IO +}, { + .name = "pic1", + .start = 0x0020, + .end = 0x0021, + .flags = IORESOURCE_BUSY | IORESOURCE_IO +}, { + .name = "timer", + .start = 0x0040, + .end = 0x005f, + .flags = IORESOURCE_BUSY | IORESOURCE_IO +}, { + .name = "keyboard", + .start = 0x0060, + .end = 0x006f, + .flags = IORESOURCE_BUSY | IORESOURCE_IO +}, { + .name = "dma page reg", + .start = 0x0080, + .end = 0x008f, + .flags = IORESOURCE_BUSY | IORESOURCE_IO +}, { + .name = "pic2", + .start = 0x00a0, + .end = 0x00a1, + .flags = IORESOURCE_BUSY | IORESOURCE_IO +}, { + .name = "dma2", + .start = 0x00c0, + .end = 0x00df, + .flags = IORESOURCE_BUSY | IORESOURCE_IO +}, { + .name = "fpu", + .start = 0x00f0, + .end = 0x00ff, + .flags = IORESOURCE_BUSY | IORESOURCE_IO +} }; + +#define STANDARD_IO_RESOURCES \ + (sizeof standard_io_resources / sizeof standard_io_resources[0]) + +#ifdef CONFIG_XEN_PRIVILEGED_GUEST +#define romsignature(x) (*(unsigned short *)(x) == 0xaa55) + +static int __init romchecksum(unsigned char *rom, unsigned long length) +{ + unsigned char *p, sum = 0; + + for (p = rom; p < rom + length; p++) + sum += *p; + return sum == 0; +} + +static void __init probe_roms(void) +{ + unsigned long start, length, upper; + unsigned char *rom; + int i; + + /* video rom */ + upper = adapter_rom_resources[0].start; + for (start = video_rom_resource.start; start < upper; start += 2048) { + rom = isa_bus_to_virt(start); + if (!romsignature(rom)) + continue; + + video_rom_resource.start = start; + + /* 0 < length <= 0x7f * 512, historically */ + length = rom[2] * 512; + + /* if checksum okay, trust length byte */ + if (length && romchecksum(rom, length)) + video_rom_resource.end = start + length - 1; + + request_resource(&iomem_resource, &video_rom_resource); + break; + } + + start = (video_rom_resource.end + 1 + 2047) & ~2047UL; + if (start < upper) + start = upper; + + /* system rom */ + request_resource(&iomem_resource, &system_rom_resource); + upper = system_rom_resource.start; + + /* check for extension rom (ignore length byte!) */ + rom = isa_bus_to_virt(extension_rom_resource.start); + if (romsignature(rom)) { + length = extension_rom_resource.end - extension_rom_resource.start + 1; + if (romchecksum(rom, length)) { + request_resource(&iomem_resource, &extension_rom_resource); + upper = extension_rom_resource.start; + } + } + + /* check for adapter roms on 2k boundaries */ + for (i = 0; i < ADAPTER_ROM_RESOURCES && start < upper; start += 2048) { + rom = isa_bus_to_virt(start); + if (!romsignature(rom)) + continue; + + /* 0 < length <= 0x7f * 512, historically */ + length = rom[2] * 512; + + /* but accept any length that fits if checksum okay */ + if (!length || start + length > upper || !romchecksum(rom, length)) + continue; + + adapter_rom_resources[i].start = start; + adapter_rom_resources[i].end = start + length - 1; + request_resource(&iomem_resource, &adapter_rom_resources[i]); + + start = adapter_rom_resources[i++].end & ~2047UL; + } +} +#endif /* * Point at the empty zero page to start with. We map the real shared_info @@ -452,13 +648,9 @@ static int __init copy_e820_map(struct e820entry * biosmap, int nr_map) #endif #if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) -unsigned char eddnr; -struct edd_info edd[EDDMAXNR]; -unsigned int edd_disk80_sig; +struct edd edd; #ifdef CONFIG_EDD_MODULE -EXPORT_SYMBOL(eddnr); EXPORT_SYMBOL(edd); -EXPORT_SYMBOL(edd_disk80_sig); #endif /** * copy_edd() - Copy the BIOS EDD information @@ -467,12 +659,15 @@ EXPORT_SYMBOL(edd_disk80_sig); */ static inline void copy_edd(void) { - eddnr = EDD_NR; - memcpy(edd, EDD_BUF, sizeof(edd)); - edd_disk80_sig = DISK80_SIGNATURE; + memcpy(edd.mbr_signature, EDD_MBR_SIGNATURE, sizeof(edd.mbr_signature)); + memcpy(edd.edd_info, EDD_BUF, sizeof(edd.edd_info)); + edd.mbr_signature_nr = EDD_MBR_SIG_NR; + edd.edd_info_nr = EDD_NR; } #else -#define copy_edd() do {} while (0) +static inline void copy_edd(void) +{ +} #endif /* @@ -481,14 +676,6 @@ static inline void copy_edd(void) */ #define LOWMEMSIZE() (0x9f000) -static void __init setup_memory_region(void) -{ - char *who = machine_specific_memory_setup(); - printk(KERN_INFO "BIOS-provided physical RAM map:\n"); - print_memory_map(who); -} /* setup_memory_region */ - - static void __init parse_cmdline_early (char ** cmdline_p) { char c = ' ', *to = command_line, *from = saved_command_line; @@ -964,6 +1151,7 @@ legacy_init_iomem_resources(struct resource *code_resource, struct resource *dat static void __init register_memory(unsigned long max_low_pfn) { unsigned long low_mem_size; + int i; if (efi_enabled) efi_initialize_iomem_resources(&code_resource, &data_resource); @@ -971,10 +1159,11 @@ static void __init register_memory(unsigned long max_low_pfn) legacy_init_iomem_resources(&code_resource, &data_resource); /* EFI systems may still have VGA */ - request_graphics_resource(); + request_resource(&iomem_resource, &video_ram_resource); /* request I/O space for devices used on all i[345]86 PCs */ - request_standard_io_resources(); + for (i = 0; i < STANDARD_IO_RESOURCES; i++) + request_resource(&ioport_resource, &standard_io_resources[i]); /* Tell the PCI layer not to allocate too close to the RAM area.. */ low_mem_size = ((max_low_pfn << PAGE_SHIFT) + 0xfffff) & ~0xfffff; @@ -1035,7 +1224,7 @@ static struct nop { } noptypes[] = { { X86_FEATURE_K8, k8_nops }, { X86_FEATURE_K7, k7_nops }, - { -1, 0 } + { -1, NULL } }; /* Replace instructions with better alternatives for this CPU type. @@ -1089,6 +1278,8 @@ static int __init noreplacement_setup(char *s) __setup("noreplacement", noreplacement_setup); +static char * __init machine_specific_memory_setup(void); + /* * Determine if we were loaded by an EFI loader. If so, then we have also been * passed the efi memmap, systab, etc., so we should use these data structures @@ -1159,8 +1350,10 @@ void __init setup_arch(char **cmdline_p) ARCH_SETUP if (efi_enabled) efi_init(); - else - setup_memory_region(); + else { + printk(KERN_INFO "BIOS-provided physical RAM map:\n"); + print_memory_map(machine_specific_memory_setup()); + } copy_edd(); diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/signal.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/signal.c similarity index 96% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/signal.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/signal.c index 4b516bbf68..a8debd478e 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/signal.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/signal.c @@ -56,16 +56,15 @@ sys_sigsuspend(int history0, int history1, old_sigset_t mask) } asmlinkage int -sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize) +sys_rt_sigsuspend(struct pt_regs regs) { - struct pt_regs * regs = (struct pt_regs *) &unewset; sigset_t saveset, newset; /* XXX: Don't preclude handling different sized sigset_t's. */ - if (sigsetsize != sizeof(sigset_t)) + if (regs.ecx != sizeof(sigset_t)) return -EINVAL; - if (copy_from_user(&newset, unewset, sizeof(newset))) + if (copy_from_user(&newset, (sigset_t __user *)regs.ebx, sizeof(newset))) return -EFAULT; sigdelsetmask(&newset, ~_BLOCKABLE); @@ -75,11 +74,11 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize) recalc_sigpending(); spin_unlock_irq(¤t->sighand->siglock); - regs->eax = -EINTR; + regs.eax = -EINTR; while (1) { current->state = TASK_INTERRUPTIBLE; schedule(); - if (do_signal(regs, &saveset)) + if (do_signal(®s, &saveset)) return -EINTR; } } @@ -117,9 +116,13 @@ sys_sigaction(int sig, const struct old_sigaction __user *act, } asmlinkage int -sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss) +sys_sigaltstack(unsigned long ebx) { - struct pt_regs *regs = (struct pt_regs *) &uss; + /* This is needed to make gcc realize it doesn't own the "struct pt_regs" */ + struct pt_regs *regs = (struct pt_regs *)&ebx; + const stack_t __user *uss = (const stack_t __user *)ebx; + stack_t __user *uoss = (stack_t __user *)regs->ecx; + return do_sigaltstack(uss, uoss, regs->esp); } @@ -333,12 +336,13 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) /* These symbols are defined with the addresses in the vsyscall page. See vsyscall-sigreturn.S. */ -extern void __kernel_sigreturn, __kernel_rt_sigreturn; +extern void __user __kernel_sigreturn; +extern void __user __kernel_rt_sigreturn; static void setup_frame(int sig, struct k_sigaction *ka, sigset_t *set, struct pt_regs * regs) { - void *restorer; + void __user *restorer; struct sigframe __user *frame; int err = 0; @@ -415,7 +419,7 @@ give_sigsegv: static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, sigset_t *set, struct pt_regs * regs) { - void *restorer; + void __user *restorer; struct rt_sigframe __user *frame; int err = 0; diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/sysenter.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/sysenter.c similarity index 96% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/sysenter.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/sysenter.c index b1e49905dc..f8b056fbb1 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/sysenter.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/sysenter.c @@ -45,7 +45,7 @@ static int __init sysenter_setup(void) { unsigned long page = get_zeroed_page(GFP_ATOMIC); - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY); + __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); if (1 /* XXXcl not yet */ || !boot_cpu_has(X86_FEATURE_SEP)) { memcpy((void *) page, diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/time.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/time.c similarity index 99% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/time.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/time.c index 6fa51ede40..fbd059a5f7 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/time.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/time.c @@ -578,7 +578,7 @@ void __init hpet_time_init(void) static int time_irq; static struct irqaction irq_timer = { - timer_interrupt, SA_INTERRUPT, 0, "timer", + timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL }; diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/timers/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/timers/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/Makefile diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c similarity index 98% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c index 468e4349e4..a872b661a4 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c @@ -67,7 +67,6 @@ static inline unsigned long long cycles_2_ns(unsigned long long cyc) return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR; } - #if 0 static int count2; /* counter for mark_offset_tsc() */ #endif @@ -316,7 +315,8 @@ static int __init cpufreq_tsc(void) { int ret; INIT_WORK(&cpufreq_delayed_get_work, handle_cpufreq_delayed_get, NULL); - ret = cpufreq_register_notifier(&time_cpufreq_notifier_block, CPUFREQ_TRANSITION_NOTIFIER); + ret = cpufreq_register_notifier(&time_cpufreq_notifier_block, + CPUFREQ_TRANSITION_NOTIFIER); if (!ret) cpufreq_init = 1; return ret; diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/traps.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/traps.c similarity index 97% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/traps.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/traps.c index e809dc830a..9cef6bd77e 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/traps.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/traps.c @@ -47,7 +47,6 @@ #include #include -#include #include #include @@ -104,7 +103,7 @@ static int valid_stack_ptr(struct task_struct *task, void *p) } #ifdef CONFIG_FRAME_POINTER -void print_context_stack(struct task_struct *task, unsigned long *stack, +static void print_context_stack(struct task_struct *task, unsigned long *stack, unsigned long ebp) { unsigned long addr; @@ -118,16 +117,17 @@ void print_context_stack(struct task_struct *task, unsigned long *stack, } } #else -void print_context_stack(struct task_struct *task, unsigned long *stack, +static void print_context_stack(struct task_struct *task, unsigned long *stack, unsigned long ebp) { unsigned long addr; while (!kstack_end(stack)) { addr = *stack++; - if (kernel_text_address(addr)) { - printk(" %p: [<%08lx>] ", stack - 4, addr); - print_symbol("%s\n", addr); + if (__kernel_text_address(addr)) { + printk(" [<%08lx>]", addr); + print_symbol(" %s\n", addr); + printk("\n"); } } } @@ -163,7 +163,6 @@ void show_trace(struct task_struct *task, unsigned long * stack) break; printk(" =======================\n"); } - printk("\n"); } void show_stack(struct task_struct *task, unsigned long *esp) @@ -398,7 +397,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ info.si_signo = signr; \ info.si_errno = 0; \ info.si_code = sicode; \ - info.si_addr = (void *)siaddr; \ + info.si_addr = (void __user *)siaddr; \ do_trap(trapnr, signr, str, 0, regs, error_code, &info); \ } @@ -415,7 +414,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ info.si_signo = signr; \ info.si_errno = 0; \ info.si_code = sicode; \ - info.si_addr = (void *)siaddr; \ + info.si_addr = (void __user *)siaddr; \ do_trap(trapnr, signr, str, 1, regs, error_code, &info); \ } @@ -661,8 +660,8 @@ asmlinkage void do_debug(struct pt_regs * regs, long error_code) /* If this is a kernel mode trap, save the user PC on entry to * the kernel, that's what the debugger can make sense of. */ - info.si_addr = ((regs->xcs & 2) == 0) ? (void *)tsk->thread.eip : - (void *)regs->eip; + info.si_addr = ((regs->xcs & 2) == 0) ? (void __user *)tsk->thread.eip : + (void __user *)regs->eip; force_sig_info(SIGTRAP, &info, tsk); /* Disable additional traps. They'll be re-enabled when @@ -688,7 +687,7 @@ clear_TF: * the correct behaviour even in the presence of the asynchronous * IRQ13 behaviour */ -void math_error(void *eip) +void math_error(void __user *eip) { struct task_struct * task; siginfo_t info; @@ -747,10 +746,10 @@ void math_error(void *eip) asmlinkage void do_coprocessor_error(struct pt_regs * regs, long error_code) { ignore_fpu_irq = 1; - math_error((void *)regs->eip); + math_error((void __user *)regs->eip); } -void simd_math_error(void *eip) +void simd_math_error(void __user *eip) { struct task_struct * task; siginfo_t info; @@ -804,7 +803,7 @@ asmlinkage void do_simd_coprocessor_error(struct pt_regs * regs, if (cpu_has_xmm) { /* Handle SIMD FPU exceptions on PIII+ processors. */ ignore_fpu_irq = 1; - simd_math_error((void *)regs->eip); + simd_math_error((void __user *)regs->eip); } else { /* * Handle strange cache flush from user space exception diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vsyscall.S b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.S similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vsyscall.S rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.S diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vsyscall.lds b/linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.lds similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/kernel/vsyscall.lds rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/vsyscall.lds diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/mm/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/Makefile diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/fault.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/fault.c similarity index 88% rename from linux-2.6.7-xen-sparse/arch/xen/i386/mm/fault.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/fault.c index d850d279d5..2c6a9ba6f8 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/fault.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/fault.c @@ -24,7 +24,6 @@ #include #include -#include #include #include @@ -191,11 +190,16 @@ static int __is_prefetch(struct pt_regs *regs, unsigned long addr) return prefetch; } -static inline int is_prefetch(struct pt_regs *regs, unsigned long addr) +static inline int is_prefetch(struct pt_regs *regs, unsigned long addr, + unsigned long error_code) { if (unlikely(boot_cpu_data.x86_vendor == X86_VENDOR_AMD && - boot_cpu_data.x86 >= 6)) + boot_cpu_data.x86 >= 6)) { + /* Catch an obscure case of prefetch inside an NX page. */ + if (nx_enabled && (error_code & 16)) + return 0; return __is_prefetch(regs, addr); + } return 0; } @@ -267,7 +271,27 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code, if (in_atomic() || !mm) goto bad_area_nosemaphore; - down_read(&mm->mmap_sem); + /* When running in the kernel we expect faults to occur only to + * addresses in user space. All other faults represent errors in the + * kernel and should generate an OOPS. Unfortunatly, in the case of an + * erroneous fault occuring in a code path which already holds mmap_sem + * we will deadlock attempting to validate the fault against the + * address space. Luckily the kernel only validly references user + * space from well defined areas of code, which are listed in the + * exceptions table. + * + * As the vast majority of faults will be valid we will only perform + * the source reference check when there is a possibilty of a deadlock. + * Attempt to lock the address space, if we cannot we then validate the + * source. If this is invalid we can skip the address space check, + * thus avoiding the deadlock. + */ + if (!down_read_trylock(&mm->mmap_sem)) { + if ((error_code & 4) == 0 && + !search_exception_tables(regs->eip)) + goto bad_area_nosemaphore; + down_read(&mm->mmap_sem); + } vma = find_vma(mm, address); if (!vma) @@ -360,7 +384,7 @@ bad_area_nosemaphore: * Valid to do another page fault here because this one came * from user space. */ - if (is_prefetch(regs, address)) + if (is_prefetch(regs, address, error_code)) return; tsk->thread.cr2 = address; @@ -370,7 +394,7 @@ bad_area_nosemaphore: info.si_signo = SIGSEGV; info.si_errno = 0; /* info.si_code has been set above */ - info.si_addr = (void *)address; + info.si_addr = (void __user *)address; force_sig_info(SIGSEGV, &info, tsk); return; } @@ -401,7 +425,7 @@ no_context: * had been triggered by is_prefetch fixup_exception would have * handled it. */ - if (is_prefetch(regs, address)) + if (is_prefetch(regs, address, error_code)) return; /* @@ -411,6 +435,14 @@ no_context: bust_spinlocks(1); +#ifdef CONFIG_X86_PAE + if (error_code & 16) { + pte_t *pte = lookup_address(address); + + if (pte && pte_present(*pte) && !pte_exec_kernel(*pte)) + printk(KERN_CRIT "kernel tried to execute NX-protected page - exploit attempt? (uid: %d)\n", current->uid); + } +#endif if (address < PAGE_SIZE) printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference"); else @@ -464,7 +496,7 @@ do_sigbus: goto no_context; /* User space => ok to do another page fault */ - if (is_prefetch(regs, address)) + if (is_prefetch(regs, address, error_code)) return; tsk->thread.cr2 = address; @@ -473,7 +505,7 @@ do_sigbus: info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRERR; - info.si_addr = (void *)address; + info.si_addr = (void __user *)address; force_sig_info(SIGBUS, &info, tsk); return; diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/highmem.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/highmem.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/mm/highmem.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/highmem.c diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/hypervisor.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/mm/hypervisor.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/init.c similarity index 88% rename from linux-2.6.7-xen-sparse/arch/xen/i386/mm/init.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/init.c index 339da5061e..12da77b2cb 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/init.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/init.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -84,7 +83,7 @@ static pte_t * __init one_page_table_init(pmd_t *pmd) wrprotect_bootpt((pgd_t *)start_info.pt_base, page_table, 1); return page_table; } - + return pte_offset_kernel(pmd, 0); } @@ -167,6 +166,13 @@ static void __init protect_bootpt_entries(pgd_t *spgd, pgd_t *dpgd, int set, flush_page_update_queue(); } +static inline int is_kernel_text(unsigned long addr) +{ + if (addr >= (unsigned long)_stext && addr <= (unsigned long)__init_end) + return 1; + return 0; +} + /* * This maps the physical memory to kernel virtual address space, a total * of max_low_pfn pages, by creating page tables starting from address @@ -192,16 +198,27 @@ static void __init kernel_physical_mapping_init(pgd_t *pgd_base) continue; pmd += pmd_idx; for (; pmd_idx < PTRS_PER_PMD && pfn < max_low_pfn; pmd++, pmd_idx++) { + unsigned int address = pfn * PAGE_SIZE + PAGE_OFFSET; + /* Map with big pages if possible, otherwise create normal page tables. */ if (cpu_has_pse) { - set_pmd(pmd, pfn_pmd(pfn, PAGE_KERNEL_LARGE)); + unsigned int address2 = (pfn + PTRS_PER_PTE - 1) * PAGE_SIZE + PAGE_OFFSET + PAGE_SIZE-1; + + if (is_kernel_text(address) || is_kernel_text(address2)) + set_pmd(pmd, pfn_pmd(pfn, PAGE_KERNEL_LARGE_EXEC)); + else + set_pmd(pmd, pfn_pmd(pfn, PAGE_KERNEL_LARGE)); pfn += PTRS_PER_PTE; } else { pte = one_page_table_init(pmd); pte += pte_ofs; - for (; pte_ofs < PTRS_PER_PTE && pfn < max_low_pfn; pte++, pfn++, pte_ofs++) - set_pte(pte, pfn_pte(pfn, PAGE_KERNEL)); + for (; pte_ofs < PTRS_PER_PTE && pfn < max_low_pfn; pte++, pfn++, pte_ofs++) { + if (is_kernel_text(address)) + set_pte(pte, pfn_pte(pfn, PAGE_KERNEL_EXEC)); + else + set_pte(pte, pfn_pte(pfn, PAGE_KERNEL)); + } pte_ofs = 0; } flush_page_update_queue(); @@ -324,7 +341,8 @@ extern void set_highmem_pages_init(int); #define set_highmem_pages_init(bad_ppro) do { } while (0) #endif /* CONFIG_HIGHMEM */ -unsigned long __PAGE_KERNEL = _PAGE_KERNEL; +unsigned long long __PAGE_KERNEL = _PAGE_KERNEL; +unsigned long long __PAGE_KERNEL_EXEC = _PAGE_KERNEL_EXEC; #ifndef CONFIG_DISCONTIGMEM #define remap_numa_kva() do {} while (0) @@ -353,6 +371,7 @@ static void __init pagetable_init (void) if (cpu_has_pge) { set_in_cr4(X86_CR4_PGE); __PAGE_KERNEL |= _PAGE_GLOBAL; + __PAGE_KERNEL_EXEC |= _PAGE_GLOBAL; } kernel_physical_mapping_init(pgd_base); @@ -443,6 +462,79 @@ void __init zone_sizes_init(void) extern void zone_sizes_init(void); #endif /* !CONFIG_DISCONTIGMEM */ +static int disable_nx __initdata = 0; +u64 __supported_pte_mask = ~_PAGE_NX; + +/* + * noexec = on|off + * + * Control non executable mappings. + * + * on Enable + * off Disable + */ +static int __init noexec_setup(char *str) +{ + if (!strncmp(str, "on",2) && cpu_has_nx) { + __supported_pte_mask |= _PAGE_NX; + disable_nx = 0; + } else if (!strncmp(str,"off",3)) { + disable_nx = 1; + __supported_pte_mask &= ~_PAGE_NX; + } + return 1; +} + +__setup("noexec=", noexec_setup); + +#ifdef CONFIG_X86_PAE +int nx_enabled = 0; + +static void __init set_nx(void) +{ + unsigned int v[4], l, h; + + if (cpu_has_pae && (cpuid_eax(0x80000000) > 0x80000001)) { + cpuid(0x80000001, &v[0], &v[1], &v[2], &v[3]); + if ((v[3] & (1 << 20)) && !disable_nx) { + rdmsr(MSR_EFER, l, h); + l |= EFER_NX; + wrmsr(MSR_EFER, l, h); + nx_enabled = 1; + __supported_pte_mask |= _PAGE_NX; + } + } +} + +/* + * Enables/disables executability of a given kernel page and + * returns the previous setting. + */ +int __init set_kernel_exec(unsigned long vaddr, int enable) +{ + pte_t *pte; + int ret = 1; + + if (!nx_enabled) + goto out; + + pte = lookup_address(vaddr); + BUG_ON(!pte); + + if (!pte_exec_kernel(*pte)) + ret = 0; + + if (enable) + pte->pte_high &= ~(1 << (_PAGE_BIT_NX - 32)); + else + pte->pte_high |= 1 << (_PAGE_BIT_NX - 32); + __flush_tlb_all(); +out: + return ret; +} + +#endif + /* * - write protect new L1 pages in old pgd * - write protect new pgd page in old pgd @@ -468,6 +560,12 @@ void __init paging_init(void) int i; #endif +#ifdef CONFIG_X86_PAE + set_nx(); + if (nx_enabled) + printk("NX (Execute Disable) protection: active\n"); +#endif + pagetable_init(); wrprotect_bootpt((pgd_t *)start_info.pt_base, swapper_pg_dir, 1); diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/ioremap.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/ioremap.c similarity index 99% rename from linux-2.6.7-xen-sparse/arch/xen/i386/mm/ioremap.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/ioremap.c index 3fb6ea9aa0..eed6379821 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/ioremap.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/ioremap.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/pgtable.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/pgtable.c similarity index 99% rename from linux-2.6.7-xen-sparse/arch/xen/i386/mm/pgtable.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/pgtable.c index 67efdabdc7..aaf7339661 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/mm/pgtable.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/pgtable.c @@ -34,7 +34,7 @@ void show_mem(void) printk("Mem-info:\n"); show_free_areas(); - printk("Free swap: %6dkB\n",nr_swap_pages<<(PAGE_SHIFT-10)); + printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); for_each_pgdat(pgdat) { for (i = 0; i < pgdat->node_spanned_pages; ++i) { page = pgdat->node_mem_map + i; diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/pci/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/pci/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/Makefile diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/pci/direct.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/direct.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/i386/pci/direct.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/direct.c diff --git a/linux-2.6.7-xen-sparse/arch/xen/i386/pci/irq.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/irq.c similarity index 99% rename from linux-2.6.7-xen-sparse/arch/xen/i386/pci/irq.c rename to linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/irq.c index f6d49f837c..7dc8dfb0ba 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/pci/irq.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/pci/irq.c @@ -22,8 +22,6 @@ #include #include -int broken_hp_bios_irq9; - /* * Never use: 0, 1, 2 (timer, keyboard, and cascade) * Avoid using: 13, 14 and 15 (FP error and IDE). diff --git a/linux-2.6.7-xen-sparse/arch/xen/kernel/Makefile b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/kernel/Makefile rename to linux-2.6.8.1-xen-sparse/arch/xen/kernel/Makefile diff --git a/linux-2.6.7-xen-sparse/arch/xen/kernel/ctrl_if.c b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/ctrl_if.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/kernel/ctrl_if.c rename to linux-2.6.8.1-xen-sparse/arch/xen/kernel/ctrl_if.c diff --git a/linux-2.6.7-xen-sparse/arch/xen/kernel/empty.c b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/empty.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/kernel/empty.c rename to linux-2.6.8.1-xen-sparse/arch/xen/kernel/empty.c diff --git a/linux-2.6.7-xen-sparse/arch/xen/kernel/evtchn.c b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/evtchn.c similarity index 99% rename from linux-2.6.7-xen-sparse/arch/xen/kernel/evtchn.c rename to linux-2.6.8.1-xen-sparse/arch/xen/kernel/evtchn.c index 87eda48725..05cb3ccdbc 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/kernel/evtchn.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/evtchn.c @@ -384,7 +384,7 @@ static irqreturn_t misdirect_interrupt(int irq, void *dev_id, static struct irqaction misdirect_action = { misdirect_interrupt, SA_INTERRUPT, - 0, + CPU_MASK_NONE, "misdirect", NULL, NULL diff --git a/linux-2.6.7-xen-sparse/arch/xen/kernel/fixup.c b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/fixup.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/kernel/fixup.c rename to linux-2.6.8.1-xen-sparse/arch/xen/kernel/fixup.c diff --git a/linux-2.6.7-xen-sparse/arch/xen/kernel/process.c b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/process.c similarity index 89% rename from linux-2.6.7-xen-sparse/arch/xen/kernel/process.c rename to linux-2.6.8.1-xen-sparse/arch/xen/kernel/process.c index f01dc9b8ec..3656196a99 100644 --- a/linux-2.6.7-xen-sparse/arch/xen/kernel/process.c +++ b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/process.c @@ -15,7 +15,7 @@ void xen_cpu_idle (void) int cpu = smp_processor_id(); local_irq_disable(); - if (need_resched() || !list_empty(&RCU_curlist(cpu))) { + if (need_resched() || RCU_curlist(cpu)) { local_irq_enable(); return; } diff --git a/linux-2.6.7-xen-sparse/arch/xen/kernel/reboot.c b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/reboot.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/kernel/reboot.c rename to linux-2.6.8.1-xen-sparse/arch/xen/kernel/reboot.c diff --git a/linux-2.6.7-xen-sparse/arch/xen/kernel/xen_proc.c b/linux-2.6.8.1-xen-sparse/arch/xen/kernel/xen_proc.c similarity index 100% rename from linux-2.6.7-xen-sparse/arch/xen/kernel/xen_proc.c rename to linux-2.6.8.1-xen-sparse/arch/xen/kernel/xen_proc.c diff --git a/linux-2.6.7-xen-sparse/drivers/Makefile b/linux-2.6.8.1-xen-sparse/drivers/Makefile similarity index 98% rename from linux-2.6.7-xen-sparse/drivers/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/Makefile index 1e2b996294..f21855a6a2 100644 --- a/linux-2.6.7-xen-sparse/drivers/Makefile +++ b/linux-2.6.8.1-xen-sparse/drivers/Makefile @@ -14,7 +14,6 @@ obj-$(CONFIG_PNP) += pnp/ # char/ comes before serial/ etc so that the VT console is the boot-time # default. - obj-y += char/ obj-y += serial/ obj-$(CONFIG_PARPORT) += parport/ @@ -44,6 +43,7 @@ obj-$(CONFIG_GAMEPORT) += input/gameport/ obj-$(CONFIG_SERIO) += input/serio/ obj-$(CONFIG_I2O) += message/ obj-$(CONFIG_I2C) += i2c/ +obj-$(CONFIG_W1) += w1/ obj-$(CONFIG_PHONE) += telephony/ obj-$(CONFIG_MD) += md/ obj-$(CONFIG_BT) += bluetooth/ diff --git a/linux-2.6.7-xen-sparse/drivers/char/mem.c b/linux-2.6.8.1-xen-sparse/drivers/char/mem.c similarity index 99% rename from linux-2.6.7-xen-sparse/drivers/char/mem.c rename to linux-2.6.8.1-xen-sparse/drivers/char/mem.c index ed3df13f65..e3b99480fe 100644 --- a/linux-2.6.7-xen-sparse/drivers/char/mem.c +++ b/linux-2.6.8.1-xen-sparse/drivers/char/mem.c @@ -40,7 +40,6 @@ #include #include -#include #ifdef CONFIG_IA64 # include diff --git a/linux-2.6.7-xen-sparse/drivers/char/tty_io.c b/linux-2.6.8.1-xen-sparse/drivers/char/tty_io.c similarity index 97% rename from linux-2.6.7-xen-sparse/drivers/char/tty_io.c rename to linux-2.6.8.1-xen-sparse/drivers/char/tty_io.c index daff96d19f..bdb091035f 100644 --- a/linux-2.6.7-xen-sparse/drivers/char/tty_io.c +++ b/linux-2.6.8.1-xen-sparse/drivers/char/tty_io.c @@ -91,6 +91,7 @@ #include #include #include +#include #include #include @@ -131,6 +132,8 @@ int console_use_vt = 1; #ifdef CONFIG_UNIX98_PTYS extern struct tty_driver *ptm_driver; /* Unix98 pty masters; for /dev/ptmx */ extern int pty_limit; /* Config limit on Unix98 ptys */ +static DEFINE_IDR(allocated_ptys); +static DECLARE_MUTEX(allocated_ptys_lock); #endif extern void disable_early_printk(void); @@ -345,18 +348,12 @@ EXPORT_SYMBOL(tty_check_change); static ssize_t hung_up_tty_read(struct file * file, char __user * buf, size_t count, loff_t *ppos) { - /* Can't seek (pread) on ttys. */ - if (ppos != &file->f_pos) - return -ESPIPE; return 0; } static ssize_t hung_up_tty_write(struct file * file, const char __user * buf, size_t count, loff_t *ppos) { - /* Can't seek (pwrite) on ttys. */ - if (ppos != &file->f_pos) - return -ESPIPE; return -EIO; } @@ -648,10 +645,6 @@ static ssize_t tty_read(struct file * file, char __user * buf, size_t count, struct tty_struct * tty; struct inode *inode; - /* Can't seek (pread) on ttys. */ - if (ppos != &file->f_pos) - return -ESPIPE; - tty = (struct tty_struct *)file->private_data; inode = file->f_dentry->d_inode; if (tty_paranoia_check(tty, inode, "tty_read")) @@ -726,10 +719,6 @@ static ssize_t tty_write(struct file * file, const char __user * buf, size_t cou struct tty_struct * tty; struct inode *inode = file->f_dentry->d_inode; - /* Can't seek (pwrite) on ttys. */ - if (ppos != &file->f_pos) - return -ESPIPE; - tty = (struct tty_struct *)file->private_data; if (tty_paranoia_check(tty, inode, "tty_write")) return -EIO; @@ -755,9 +744,6 @@ ssize_t redirected_tty_write(struct file * file, const char __user * buf, size_t if (p) { ssize_t res; - /* Can't seek (pwrite) on ttys. */ - if (ppos != &file->f_pos) - return -ESPIPE; res = vfs_write(p, buf, count, &p->f_pos); fput(p); return res; @@ -1068,6 +1054,7 @@ static void release_dev(struct file * filp) { struct tty_struct *tty, *o_tty; int pty_master, tty_closing, o_tty_closing, do_sleep; + int devpts_master, devpts; int idx; char buf[64]; @@ -1082,6 +1069,8 @@ static void release_dev(struct file * filp) idx = tty->index; pty_master = (tty->driver->type == TTY_DRIVER_TYPE_PTY && tty->driver->subtype == PTY_TYPE_MASTER); + devpts = (tty->driver->flags & TTY_DRIVER_DEVPTS_MEM) != 0; + devpts_master = pty_master && devpts; o_tty = tty->link; #ifdef TTY_PARANOIA_CHECK @@ -1298,11 +1287,21 @@ static void release_dev(struct file * filp) o_tty->ldisc = ldiscs[N_TTY]; } - /* + /* * The release_mem function takes care of the details of clearing * the slots and preserving the termios structure. */ release_mem(tty, idx); + +#ifdef CONFIG_UNIX98_PTYS + /* Make this pty number available for reallocation */ + if (devpts) { + down(&allocated_ptys_lock); + idr_remove(&allocated_ptys, idx); + up(&allocated_ptys_lock); + } +#endif + } /* @@ -1325,8 +1324,13 @@ static int tty_open(struct inode * inode, struct file * filp) int index; dev_t device = inode->i_rdev; unsigned short saved_flags = filp->f_flags; + + nonseekable_open(inode, filp); retry_open: noctty = filp->f_flags & O_NOCTTY; + index = -1; + retval = 0; + if (device == MKDEV(TTYAUX_MAJOR,0)) { if (!current->signal->tty) return -ENXIO; @@ -1347,13 +1351,8 @@ retry_open: } #endif if (device == MKDEV(TTYAUX_MAJOR,1)) { - struct console *c = console_drivers; - for (c = console_drivers; c; c = c->next) { - if (!c->device) - continue; - driver = c->device(c, &index); - if (!driver) - continue; + driver = console_device(&index); + if (driver) { /* Don't let /dev/console block */ filp->f_flags |= O_NONBLOCK; noctty = 1; @@ -1364,24 +1363,40 @@ retry_open: #ifdef CONFIG_UNIX98_PTYS if (device == MKDEV(TTYAUX_MAJOR,2)) { + int idr_ret; + /* find a device that is not in use. */ - static int next_ptmx_dev = 0; - retval = -1; + down(&allocated_ptys_lock); + if (!idr_pre_get(&allocated_ptys, GFP_KERNEL)) { + up(&allocated_ptys_lock); + return -ENOMEM; + } + idr_ret = idr_get_new(&allocated_ptys, NULL, &index); + if (idr_ret < 0) { + up(&allocated_ptys_lock); + if (idr_ret == -EAGAIN) + return -ENOMEM; + return -EIO; + } + if (index >= pty_limit) { + idr_remove(&allocated_ptys, index); + up(&allocated_ptys_lock); + return -EIO; + } + up(&allocated_ptys_lock); + driver = ptm_driver; - while (driver->refcount < pty_limit) { - index = next_ptmx_dev; - next_ptmx_dev = (next_ptmx_dev+1) % driver->num; - if (!init_dev(driver, index, &tty)) - goto ptmx_found; /* ok! */ + retval = init_dev(driver, index, &tty); + if (retval) { + down(&allocated_ptys_lock); + idr_remove(&allocated_ptys, index); + up(&allocated_ptys_lock); + return retval; } - return -EIO; /* no free ptys */ - ptmx_found: + set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */ - if (devpts_pty_new(tty->link)) { - /* BADNESS - need to destroy both ptm and pts! */ - return -ENOMEM; - } - noctty = 1; + if (devpts_pty_new(tty->link)) + retval = -ENOMEM; } else #endif { @@ -1403,10 +1418,12 @@ got_driver: #ifdef TTY_DEBUG_HANGUP printk(KERN_DEBUG "opening %s...", tty->name); #endif - if (tty->driver->open) - retval = tty->driver->open(tty, filp); - else - retval = -ENODEV; + if (!retval) { + if (tty->driver->open) + retval = tty->driver->open(tty, filp); + else + retval = -ENODEV; + } filp->f_flags = saved_flags; if (!retval && test_bit(TTY_EXCLUSIVE, &tty->flags) && !capable(CAP_SYS_ADMIN)) @@ -1418,6 +1435,14 @@ got_driver: tty->name); #endif +#ifdef CONFIG_UNIX98_PTYS + if (index != -1) { + down(&allocated_ptys_lock); + idr_remove(&allocated_ptys, index); + up(&allocated_ptys_lock); + } +#endif + release_dev(filp); if (retval != -ERESTARTSYS) return retval; diff --git a/linux-2.6.7-xen-sparse/drivers/xen/Makefile b/linux-2.6.8.1-xen-sparse/drivers/xen/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/xen/Makefile diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkback/Makefile b/linux-2.6.8.1-xen-sparse/drivers/xen/blkback/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkback/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkback/Makefile diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkback/blkback.c b/linux-2.6.8.1-xen-sparse/drivers/xen/blkback/blkback.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkback/blkback.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkback/blkback.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkback/common.h b/linux-2.6.8.1-xen-sparse/drivers/xen/blkback/common.h similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkback/common.h rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkback/common.h diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkback/control.c b/linux-2.6.8.1-xen-sparse/drivers/xen/blkback/control.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkback/control.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkback/control.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkback/interface.c b/linux-2.6.8.1-xen-sparse/drivers/xen/blkback/interface.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkback/interface.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkback/interface.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkback/vbd.c b/linux-2.6.8.1-xen-sparse/drivers/xen/blkback/vbd.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkback/vbd.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkback/vbd.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkfront/Kconfig b/linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Kconfig similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkfront/Kconfig rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Kconfig diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkfront/Makefile b/linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkfront/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/Makefile diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkfront/blkfront.c b/linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/blkfront.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkfront/blkfront.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/blkfront.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkfront/block.h b/linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/block.h similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkfront/block.h rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/block.h diff --git a/linux-2.6.7-xen-sparse/drivers/xen/blkfront/vbd.c b/linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/vbd.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/blkfront/vbd.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/blkfront/vbd.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/console/Makefile b/linux-2.6.8.1-xen-sparse/drivers/xen/console/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/console/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/xen/console/Makefile diff --git a/linux-2.6.7-xen-sparse/drivers/xen/console/console.c b/linux-2.6.8.1-xen-sparse/drivers/xen/console/console.c similarity index 99% rename from linux-2.6.7-xen-sparse/drivers/xen/console/console.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/console/console.c index c7c3d76e69..8657a426c8 100644 --- a/linux-2.6.7-xen-sparse/drivers/xen/console/console.c +++ b/linux-2.6.8.1-xen-sparse/drivers/xen/console/console.c @@ -621,7 +621,10 @@ const struct consw xennull_con = { .con_bmove = DUMMY, .con_switch = DUMMY, .con_blank = DUMMY, - .con_font_op = DUMMY, + .con_font_set = DUMMY, + .con_font_get = DUMMY, + .con_font_default = DUMMY, + .con_font_copy = DUMMY, .con_set_palette = DUMMY, .con_scrolldelta = DUMMY, }; diff --git a/linux-2.6.7-xen-sparse/drivers/xen/evtchn/Makefile b/linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/evtchn/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/Makefile diff --git a/linux-2.6.7-xen-sparse/drivers/xen/evtchn/evtchn.c b/linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/evtchn.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/evtchn/evtchn.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/evtchn/evtchn.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/netback/Makefile b/linux-2.6.8.1-xen-sparse/drivers/xen/netback/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/netback/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/xen/netback/Makefile diff --git a/linux-2.6.7-xen-sparse/drivers/xen/netback/common.h b/linux-2.6.8.1-xen-sparse/drivers/xen/netback/common.h similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/netback/common.h rename to linux-2.6.8.1-xen-sparse/drivers/xen/netback/common.h diff --git a/linux-2.6.7-xen-sparse/drivers/xen/netback/control.c b/linux-2.6.8.1-xen-sparse/drivers/xen/netback/control.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/netback/control.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/netback/control.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/netback/interface.c b/linux-2.6.8.1-xen-sparse/drivers/xen/netback/interface.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/netback/interface.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/netback/interface.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/netback/netback.c b/linux-2.6.8.1-xen-sparse/drivers/xen/netback/netback.c similarity index 99% rename from linux-2.6.7-xen-sparse/drivers/xen/netback/netback.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/netback/netback.c index 74b618d8a4..103bcbd72f 100644 --- a/linux-2.6.7-xen-sparse/drivers/xen/netback/netback.c +++ b/linux-2.6.8.1-xen-sparse/drivers/xen/netback/netback.c @@ -749,8 +749,7 @@ static int __init netback_init(void) { page = virt_to_page(MMAP_VADDR(i)); set_page_count(page, 1); - SetPageForeign(page); - PageForeignDestructor(page) = netif_page_release; + SetPageForeign(page, netif_page_release); } pending_cons = 0; diff --git a/linux-2.6.7-xen-sparse/drivers/xen/netfront/Kconfig b/linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Kconfig similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/netfront/Kconfig rename to linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Kconfig diff --git a/linux-2.6.7-xen-sparse/drivers/xen/netfront/Makefile b/linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/netfront/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/xen/netfront/Makefile diff --git a/linux-2.6.7-xen-sparse/drivers/xen/netfront/netfront.c b/linux-2.6.8.1-xen-sparse/drivers/xen/netfront/netfront.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/netfront/netfront.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/netfront/netfront.c diff --git a/linux-2.6.7-xen-sparse/drivers/xen/privcmd/Makefile b/linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/Makefile similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/privcmd/Makefile rename to linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/Makefile diff --git a/linux-2.6.7-xen-sparse/drivers/xen/privcmd/privcmd.c b/linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/privcmd.c similarity index 100% rename from linux-2.6.7-xen-sparse/drivers/xen/privcmd/privcmd.c rename to linux-2.6.8.1-xen-sparse/drivers/xen/privcmd/privcmd.c diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/desc.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/desc.h similarity index 96% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/desc.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/desc.h index b36aaa26b3..3cebc41697 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/desc.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/desc.h @@ -46,8 +46,8 @@ __asm__ __volatile__ ("movw %w3,0(%2)\n\t" \ static inline void __set_tss_desc(unsigned int cpu, unsigned int entry, void *addr) { - _set_tssldt_desc(&get_cpu_gdt_table(cpu)[entry], - (int)addr, 235, 0x89); + _set_tssldt_desc(&get_cpu_gdt_table(cpu)[entry], (int)addr, + offsetof(struct tss_struct, __cacheline_filler) - 1, 0x89); } #define set_tss_desc(cpu,addr) __set_tss_desc(cpu, GDT_ENTRY_TSS, addr) diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h similarity index 98% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h index 0ba88a13e5..a865309a33 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h @@ -1,6 +1,9 @@ #ifndef _ASM_I386_DMA_MAPPING_H #define _ASM_I386_DMA_MAPPING_H +#include +#include + #include #include #include diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/e820.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/e820.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/e820.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/e820.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/fixmap.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/fixmap.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/fixmap.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/fixmap.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/highmem.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/highmem.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/highmem.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/highmem.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/io.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/io.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/io.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/io.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/do_timer.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/io_ports.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h similarity index 60% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h index cf0b2f6437..6b5dadcf1d 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_mpspec.h @@ -1,11 +1,6 @@ #ifndef __ASM_MACH_MPSPEC_H #define __ASM_MACH_MPSPEC_H -/* - * a maximum of 16 APICs with the current APIC ID architecture. - */ -#define MAX_APICS 16 - #define MAX_IRQ_SOURCES 256 #define MAX_MP_BUSSES 32 diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_reboot.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_resources.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_resources.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_resources.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_resources.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_time.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_timer.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/mach_traps.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/pci-functions.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h similarity index 89% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h index 012932aa87..e4daac8ed3 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h @@ -6,7 +6,7 @@ * use of all of the static functions. **/ -static inline char * __init machine_specific_memory_setup(void) +static char * __init machine_specific_memory_setup(void) { char *who; unsigned long start_pfn, max_pfn; @@ -25,7 +25,7 @@ static inline char * __init machine_specific_memory_setup(void) extern void hypervisor_callback(void); extern void failsafe_callback(void); -static inline void __init machine_specific_arch_setup(void) +static void __init machine_specific_arch_setup(void) { HYPERVISOR_set_callbacks( __KERNEL_CS, (unsigned long)hypervisor_callback, diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h similarity index 62% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h index 957ed99358..b18df6896c 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h @@ -2,4 +2,4 @@ #define ARCH_SETUP machine_specific_arch_setup(); -static inline void __init machine_specific_arch_setup(void); +static void __init machine_specific_arch_setup(void); diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mmu_context.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mmu_context.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/mmu_context.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/mmu_context.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/msr.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/msr.h similarity index 97% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/msr.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/msr.h index 452d0690c4..4cc4f318ba 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/msr.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/msr.h @@ -232,6 +232,15 @@ static inline void wrmsrl (unsigned long msr, unsigned long long val) #define MSR_K7_FID_VID_CTL 0xC0010041 #define MSR_K7_FID_VID_STATUS 0xC0010042 +/* extended feature register */ +#define MSR_EFER 0xc0000080 + +/* EFER bits: */ + +/* Execute Disable enable */ +#define _EFER_NX 11 +#define EFER_NX (1<<_EFER_NX) + /* Centaur-Hauls/IDT defined MSRs. */ #define MSR_IDT_FCR1 0x107 #define MSR_IDT_FCR2 0x108 diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/page.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/page.h similarity index 94% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/page.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/page.h index c7999f04bd..d299d7cd02 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/page.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/page.h @@ -59,15 +59,20 @@ static inline unsigned long machine_to_phys(unsigned long machine) * These are used to make use of C type-checking.. */ #ifdef CONFIG_X86_PAE +extern unsigned long long __supported_pte_mask; +extern int nx_enabled; typedef struct { unsigned long pte_low, pte_high; } pte_t; typedef struct { unsigned long long pmd; } pmd_t; typedef struct { unsigned long long pgd; } pgd_t; +typedef struct { unsigned long long pgprot; } pgprot_t; #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) #define HPAGE_SHIFT 21 #else +#define nx_enabled 0 typedef struct { unsigned long pte_low; } pte_t; typedef struct { unsigned long pmd; } pmd_t; typedef struct { unsigned long pgd; } pgd_t; +typedef struct { unsigned long pgprot; } pgprot_t; #define boot_pte_t pte_t /* or would you rather have a typedef */ #if 0 /* XXXcl for MMU_UPDATE_DEBUG */ static inline unsigned long pte_val(pte_t x) @@ -90,7 +95,6 @@ static inline unsigned long pte_val(pte_t x) #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) #endif -typedef struct { unsigned long pgprot; } pgprot_t; static inline unsigned long pmd_val(pmd_t x) { @@ -187,8 +191,10 @@ static __inline__ int get_order(unsigned long size) #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) -#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ - VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) +#define VM_DATA_DEFAULT_FLAGS \ + (VM_READ | VM_WRITE | \ + ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \ + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) /* VIRT <-> MACHINE conversion */ #define virt_to_machine(_a) (phys_to_machine(__pa(_a))) diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/param.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/param.h similarity index 93% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/param.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/param.h index 8ac120c98a..658b29ed9c 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/param.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/param.h @@ -18,5 +18,6 @@ #endif #define MAXHOSTNAMELEN 64 /* max length of hostname */ +#define COMMAND_LINE_SIZE 256 #endif diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pci.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pci.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pci.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pci.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgalloc.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgalloc.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgalloc.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgalloc.h diff --git a/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h new file mode 100644 index 0000000000..2afc4fba6f --- /dev/null +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h @@ -0,0 +1,21 @@ +#ifndef _I386_PGTABLE_2LEVEL_DEFS_H +#define _I386_PGTABLE_2LEVEL_DEFS_H + +/* + * traditional i386 two-level paging structure: + */ + +#define PGDIR_SHIFT 22 +#define PTRS_PER_PGD 1024 +#define PTRS_PER_PGD_NO_HV (HYPERVISOR_VIRT_START >> PGDIR_SHIFT) + +/* + * the i386 is two-level, so we don't really have any + * PMD directory physically. + */ +#define PMD_SHIFT 22 +#define PTRS_PER_PMD 1 + +#define PTRS_PER_PTE 1024 + +#endif /* _I386_PGTABLE_2LEVEL_DEFS_H */ diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h similarity index 93% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h index f30bd2b83d..c3d554ca70 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h @@ -1,23 +1,6 @@ #ifndef _I386_PGTABLE_2LEVEL_H #define _I386_PGTABLE_2LEVEL_H -/* - * traditional i386 two-level paging structure: - */ - -#define PGDIR_SHIFT 22 -#define PTRS_PER_PGD 1024 -#define PTRS_PER_PGD_NO_HV (HYPERVISOR_VIRT_START >> PGDIR_SHIFT) - -/* - * the i386 is two-level, so we don't really have any - * PMD directory physically. - */ -#define PMD_SHIFT 22 -#define PTRS_PER_PMD 1 - -#define PTRS_PER_PTE 1024 - #define pte_ERROR(e) \ printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, (e).pte_low) #define pmd_ERROR(e) \ @@ -119,6 +102,22 @@ static inline pte_t ptep_get_and_clear(pte_t *xp) #define pfn_pte_ma(pfn, prot) __pte_ma(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) #define pfn_pmd(pfn, prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) +/* + * All present user pages are user-executable: + */ +static inline int pte_exec(pte_t pte) +{ + return pte_user(pte); +} + +/* + * All present pages are kernel-executable: + */ +static inline int pte_exec_kernel(pte_t pte) +{ + return 1; +} + /* * Bits 0, 6 and 7 are taken, split up the 29 bits of offset * into this range: diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgtable.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable.h similarity index 82% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgtable.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable.h index 3d10ce434a..a78420491c 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/pgtable.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/pgtable.h @@ -44,19 +44,15 @@ void pgd_dtor(void *, kmem_cache_t *, unsigned long); void pgtable_cache_init(void); void paging_init(void); -#endif /* !__ASSEMBLY__ */ - /* * The Linux x86 paging architecture is 'compile-time dual-mode', it * implements both the traditional 2-level x86 page tables and the * newer 3-level PAE-mode page tables. */ -#ifndef __ASSEMBLY__ #ifdef CONFIG_X86_PAE -# include +# include #else -# include -#endif +# include #endif #define PMD_SIZE (1UL << PMD_SHIFT) @@ -74,8 +70,6 @@ void paging_init(void); #define BOOT_USER_PGD_PTRS (__PAGE_OFFSET >> TWOLEVEL_PGDIR_SHIFT) #define BOOT_KERNEL_PGD_PTRS (1024-BOOT_USER_PGD_PTRS) - -#ifndef __ASSEMBLY__ /* Just any arbitrary offset to the start of the vmalloc VM area: the * current 8MB value just means that there will be a 8MB "hole" after the * physical memory until the kernel virtual memory starts. That means that @@ -84,15 +78,17 @@ void paging_init(void); * area for the same reason. ;) */ #define VMALLOC_OFFSET (8*1024*1024) -extern void * high_memory; -#define VMALLOC_START (((unsigned long) high_memory + 2*VMALLOC_OFFSET-1) & \ - ~(VMALLOC_OFFSET-1)) +#define VMALLOC_START (((unsigned long) high_memory + vmalloc_earlyreserve + \ + 2*VMALLOC_OFFSET-1) & ~(VMALLOC_OFFSET-1)) #ifdef CONFIG_HIGHMEM # define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE) #else # define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE) #endif +extern void * high_memory; +extern unsigned long vmalloc_earlyreserve; + /* * The 4MB page is guessing.. Detailed in the infamous "Chapter H" * of the Pentium details, but assuming intel did the straightforward @@ -112,6 +108,7 @@ extern void * high_memory; #define _PAGE_BIT_UNUSED1 9 /* available for programmer */ #define _PAGE_BIT_UNUSED2 10 #define _PAGE_BIT_UNUSED3 11 +#define _PAGE_BIT_NX 63 #define _PAGE_PRESENT 0x001 #define _PAGE_RW 0x002 @@ -128,28 +125,51 @@ extern void * high_memory; #define _PAGE_FILE 0x040 /* set:pagecache unset:swap */ #define _PAGE_PROTNONE 0x080 /* If not present */ +#ifdef CONFIG_X86_PAE +#define _PAGE_NX (1ULL<<_PAGE_BIT_NX) +#else +#define _PAGE_NX 0 +#endif #define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY) #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY) #define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY) -#define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED) -#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED) -#define PAGE_COPY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED) -#define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED) +#define PAGE_NONE \ + __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED) +#define PAGE_SHARED \ + __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED) + +#define PAGE_SHARED_EXEC \ + __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED) +#define PAGE_COPY_NOEXEC \ + __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX) +#define PAGE_COPY_EXEC \ + __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED) +#define PAGE_COPY \ + PAGE_COPY_NOEXEC +#define PAGE_READONLY \ + __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX) +#define PAGE_READONLY_EXEC \ + __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED) #define _PAGE_KERNEL \ + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX) +#define _PAGE_KERNEL_EXEC \ (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED) -extern unsigned long __PAGE_KERNEL; -#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW) -#define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD) -#define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) +extern unsigned long long __PAGE_KERNEL, __PAGE_KERNEL_EXEC; +#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW) +#define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD) +#define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) +#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE) #define PAGE_KERNEL __pgprot(__PAGE_KERNEL) #define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO) +#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC) #define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE) #define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE) +#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC) /* * The i386 can't do page protection for execute, and considers that @@ -160,19 +180,19 @@ extern unsigned long __PAGE_KERNEL; #define __P001 PAGE_READONLY #define __P010 PAGE_COPY #define __P011 PAGE_COPY -#define __P100 PAGE_READONLY -#define __P101 PAGE_READONLY -#define __P110 PAGE_COPY -#define __P111 PAGE_COPY +#define __P100 PAGE_READONLY_EXEC +#define __P101 PAGE_READONLY_EXEC +#define __P110 PAGE_COPY_EXEC +#define __P111 PAGE_COPY_EXEC #define __S000 PAGE_NONE #define __S001 PAGE_READONLY #define __S010 PAGE_SHARED #define __S011 PAGE_SHARED -#define __S100 PAGE_READONLY -#define __S101 PAGE_READONLY -#define __S110 PAGE_SHARED -#define __S111 PAGE_SHARED +#define __S100 PAGE_READONLY_EXEC +#define __S101 PAGE_READONLY_EXEC +#define __S110 PAGE_SHARED_EXEC +#define __S111 PAGE_SHARED_EXEC /* * Define this if things work differently on an i386 and an i486: @@ -201,7 +221,6 @@ extern unsigned long pg0[]; */ static inline int pte_user(pte_t pte) { return (pte).pte_low & _PAGE_USER; } static inline int pte_read(pte_t pte) { return (pte).pte_low & _PAGE_USER; } -static inline int pte_exec(pte_t pte) { return (pte).pte_low & _PAGE_USER; } static inline int pte_dirty(pte_t pte) { return (pte).pte_low & _PAGE_DIRTY; } static inline int pte_young(pte_t pte) { return (pte).pte_low & _PAGE_ACCESSED; } static inline int pte_write(pte_t pte) { return (pte).pte_low & _PAGE_RW; } @@ -222,22 +241,30 @@ static inline pte_t pte_mkdirty(pte_t pte) { (pte).pte_low |= _PAGE_DIRTY; retur static inline pte_t pte_mkyoung(pte_t pte) { (pte).pte_low |= _PAGE_ACCESSED; return pte; } static inline pte_t pte_mkwrite(pte_t pte) { (pte).pte_low |= _PAGE_RW; return pte; } +#ifdef CONFIG_X86_PAE +# include +#else +# include +#endif + static inline int ptep_test_and_clear_dirty(pte_t *ptep) { - unsigned long pteval = *(unsigned long *)ptep; - int ret = pteval & _PAGE_DIRTY; + pte_t pte = *ptep; + int ret = pte_dirty(pte); if (ret) - queue_l1_entry_update(ptep, pteval & ~_PAGE_DIRTY); + queue_l1_entry_update(ptep, pte_mkclean(pte).pte_low); return ret; } -static inline int ptep_test_and_clear_young(pte_t *ptep) + +static inline int ptep_test_and_clear_young(pte_t *ptep) { - unsigned long pteval = *(unsigned long *)ptep; - int ret = pteval & _PAGE_ACCESSED; + pte_t pte = *ptep; + int ret = pte_young(pte); if (ret) - queue_l1_entry_update(ptep, pteval & ~_PAGE_ACCESSED); + queue_l1_entry_update(ptep, pte_mkold(pte).pte_low); return ret; } + static inline void ptep_set_wrprotect(pte_t *ptep) { pte_t pte = *ptep; @@ -246,9 +273,9 @@ static inline void ptep_set_wrprotect(pte_t *ptep) } static inline void ptep_mkdirty(pte_t *ptep) { - unsigned long pteval = *(unsigned long *)ptep; - if (!(pteval & _PAGE_DIRTY)) - queue_l1_entry_update(ptep, pteval | _PAGE_DIRTY); + pte_t pte = *ptep; + if (!pte_dirty(pte)) + queue_l1_entry_update(ptep, pte_mkdirty(pte).pte_low); } /* @@ -270,6 +297,15 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) { pte.pte_low &= _PAGE_CHG_MASK; pte.pte_low |= pgprot_val(newprot); +#ifdef CONFIG_X86_PAE + /* + * Chop off the NX bit (if present), and add the NX portion of + * the newprot (if present): + */ + pte.pte_high &= ~(1 << (_PAGE_BIT_NX - 32)); + pte.pte_high |= (pgprot_val(newprot) >> 32) & \ + (__supported_pte_mask >> 32); +#endif return pte; } @@ -332,6 +368,26 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) #define pte_offset_kernel(dir, address) \ ((pte_t *) pmd_page_kernel(*(dir)) + pte_index(address)) +/* + * Helper function that returns the kernel pagetable entry controlling + * the virtual address 'address'. NULL means no pagetable entry present. + * NOTE: the return type is pte_t but if the pmd is PSE then we return it + * as a pte too. + */ +extern pte_t *lookup_address(unsigned long address); + +/* + * Make a given kernel text page executable/non-executable. + * Returns the previous executability setting of that page (which + * is used to restore the previous state). Used by the SMP bootup code. + * NOTE: this is an __init function for security reasons. + */ +#ifdef CONFIG_X86_PAE + extern int set_kernel_exec(unsigned long vaddr, int enable); +#else + static inline int set_kernel_exec(unsigned long vaddr, int enable) { return 0;} +#endif + #if defined(CONFIG_HIGHPTE) #define pte_offset_map(dir, address) \ ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)),KM_PTE0) + \ diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/processor.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/processor.h similarity index 98% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/processor.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/processor.h index b4eafd19f7..7b4ca3fdb9 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/processor.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/processor.h @@ -271,14 +271,8 @@ static inline void clear_in_cr4 (unsigned long mask) /* * Bus types (default is ISA, but people can check others with these..) - * pc98 indicates PC98 systems (CBUS) */ extern int MCA_bus; -#ifdef CONFIG_X86_PC9800 -#define pc98 1 -#else -#define pc98 0 -#endif static inline void __monitor(const void *eax, unsigned long ecx, unsigned long edx) @@ -315,9 +309,9 @@ extern unsigned int mca_pentium_flag; #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3)) /* - * Size of io_bitmap, covering ports 0 to 0x3ff. + * Size of io_bitmap. */ -#define IO_BITMAP_BITS 1024 +#define IO_BITMAP_BITS 65536 #define IO_BITMAP_BYTES (IO_BITMAP_BITS/8) #define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long)) #define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap) @@ -409,7 +403,7 @@ struct tss_struct { /* * pads the TSS to be cacheline-aligned (size is 0x100) */ - unsigned long __cacheline_filler[5]; + unsigned long __cacheline_filler[37]; /* * .. and then another 0x100 bytes for emergency kernel stack */ diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/segment.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/segment.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/segment.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/segment.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/setup.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/setup.h similarity index 94% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/setup.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/setup.h index 5d7513a392..a8ef8aa22b 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/setup.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/setup.h @@ -56,8 +56,9 @@ extern unsigned char boot_params[PARAM_SIZE]; #define INITRD_START (__pa(start_info.mod_start)) #define INITRD_SIZE (start_info.mod_len) #define EDID_INFO (*(struct edid_info *) (PARAM+0x440)) -#define DISK80_SIGNATURE (*(unsigned int*) (PARAM+DISK80_SIG_BUFFER)) #define EDD_NR (*(unsigned char *) (PARAM+EDDNR)) +#define EDD_MBR_SIG_NR (*(unsigned char *) (PARAM+EDD_MBR_SIG_NR_BUF)) +#define EDD_MBR_SIGNATURE ((unsigned int *) (PARAM+EDD_MBR_SIG_BUF)) #define EDD_BUF ((struct edd_info *) (PARAM+EDDBUF)) #endif /* __ASSEMBLY__ */ diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/system.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/system.h similarity index 98% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/system.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/system.h index 920b1c31db..822c57f29a 100644 --- a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/system.h +++ b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/system.h @@ -513,13 +513,6 @@ do { \ void disable_hlt(void); void enable_hlt(void); -extern unsigned long dmi_broken; -extern int is_sony_vaio_laptop; extern int es7000_plat; -#define BROKEN_ACPI_Sx 0x0001 -#define BROKEN_INIT_AFTER_S1 0x0002 -#define BROKEN_PNP_BIOS 0x0004 -#define BROKEN_CPUFREQ 0x0008 - #endif diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/timer.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/timer.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/timer.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/timer.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/tlbflush.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/tlbflush.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/tlbflush.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/tlbflush.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/vga.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/vga.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/vga.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/vga.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/xor.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/xor.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/asm-i386/xor.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/asm-i386/xor.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/ctrl_if.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/ctrl_if.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/ctrl_if.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/ctrl_if.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/evtchn.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/evtchn.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/evtchn.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/evtchn.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/hypervisor.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/hypervisor.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/hypervisor.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/hypervisor.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/multicall.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/multicall.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/multicall.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/multicall.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/proc_cmd.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/proc_cmd.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/proc_cmd.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/proc_cmd.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/queues.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/queues.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/queues.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/queues.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/suspend.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/suspend.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/suspend.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/suspend.h diff --git a/linux-2.6.7-xen-sparse/include/asm-xen/xen_proc.h b/linux-2.6.8.1-xen-sparse/include/asm-xen/xen_proc.h similarity index 100% rename from linux-2.6.7-xen-sparse/include/asm-xen/xen_proc.h rename to linux-2.6.8.1-xen-sparse/include/asm-xen/xen_proc.h diff --git a/linux-2.6.7-xen-sparse/include/linux/bio.h b/linux-2.6.8.1-xen-sparse/include/linux/bio.h similarity index 92% rename from linux-2.6.7-xen-sparse/include/linux/bio.h rename to linux-2.6.8.1-xen-sparse/include/linux/bio.h index e4d50adaf2..069345e5b3 100644 --- a/linux-2.6.7-xen-sparse/include/linux/bio.h +++ b/linux-2.6.8.1-xen-sparse/include/linux/bio.h @@ -25,6 +25,15 @@ /* Platforms may set this to teach the BIO layer about IOMMU hardware. */ #include + +#if defined(BIO_VMERGE_MAX_SIZE) && defined(BIO_VMERGE_BOUNDARY) +#define BIOVEC_VIRT_START_SIZE(x) (bvec_to_phys(x) & (BIO_VMERGE_BOUNDARY - 1)) +#define BIOVEC_VIRT_OVERSIZE(x) ((x) > BIO_VMERGE_MAX_SIZE) +#else +#define BIOVEC_VIRT_START_SIZE(x) 0 +#define BIOVEC_VIRT_OVERSIZE(x) 0 +#endif + #ifndef BIO_VMERGE_BOUNDARY #define BIO_VMERGE_BOUNDARY 0 #endif @@ -81,6 +90,15 @@ struct bio { unsigned short bi_hw_segments; unsigned int bi_size; /* residual I/O count */ + + /* + * To keep track of the max hw size, we account for the + * sizes of the first and last virtually mergeable segments + * in this bio + */ + unsigned int bi_hw_front_size; + unsigned int bi_hw_back_size; + unsigned int bi_max_vecs; /* max bvl_vecs we can hold */ struct bio_vec *bi_io_vec; /* the actual vec list */ @@ -102,6 +120,7 @@ struct bio { #define BIO_SEG_VALID 3 /* nr_hw_seg valid */ #define BIO_CLONED 4 /* doesn't own data */ #define BIO_BOUNCED 5 /* bio is a bounce bio */ +#define BIO_USER_MAPPED 6 /* contains user pages */ #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag))) /* @@ -249,9 +268,11 @@ extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int); extern int bio_get_nr_vecs(struct block_device *); extern struct bio *bio_map_user(struct request_queue *, struct block_device *, unsigned long, unsigned int, int); -extern void bio_unmap_user(struct bio *, int); +extern void bio_unmap_user(struct bio *); extern void bio_set_pages_dirty(struct bio *bio); extern void bio_check_pages_dirty(struct bio *bio); +extern struct bio *bio_copy_user(struct request_queue *, unsigned long, unsigned int, int); +extern int bio_uncopy_user(struct bio *); #ifdef CONFIG_HIGHMEM /* diff --git a/linux-2.6.7-xen-sparse/include/linux/page-flags.h b/linux-2.6.8.1-xen-sparse/include/linux/page-flags.h similarity index 97% rename from linux-2.6.7-xen-sparse/include/linux/page-flags.h rename to linux-2.6.8.1-xen-sparse/include/linux/page-flags.h index 951844c30e..b155a20953 100644 --- a/linux-2.6.7-xen-sparse/include/linux/page-flags.h +++ b/linux-2.6.8.1-xen-sparse/include/linux/page-flags.h @@ -195,16 +195,10 @@ extern unsigned long __read_page_state(unsigned offset); #define ClearPageReferenced(page) clear_bit(PG_referenced, &(page)->flags) #define TestClearPageReferenced(page) test_and_clear_bit(PG_referenced, &(page)->flags) -#ifndef arch_set_page_uptodate -#define arch_set_page_uptodate(page) do { } while (0) -#endif - #define PageUptodate(page) test_bit(PG_uptodate, &(page)->flags) -#define SetPageUptodate(page) \ - do { \ - arch_set_page_uptodate(page); \ - set_bit(PG_uptodate, &(page)->flags); \ - } while (0) +#ifndef SetPageUptodate +#define SetPageUptodate(page) set_bit(PG_uptodate, &(page)->flags) +#endif #define ClearPageUptodate(page) clear_bit(PG_uptodate, &(page)->flags) #define PageDirty(page) test_bit(PG_dirty, &(page)->flags) @@ -306,7 +300,10 @@ extern unsigned long __read_page_state(unsigned offset); /* A foreign page uses a custom destructor rather than the buddy allocator. */ #ifdef CONFIG_FOREIGN_PAGES #define PageForeign(page) test_bit(PG_foreign, &(page)->flags) -#define SetPageForeign(page) set_bit(PG_foreign, &(page)->flags) +#define SetPageForeign(page, dtor) do { \ + set_bit(PG_foreign, &(page)->flags); \ + (page)->mapping = (void *)dtor; \ +} while (0) #define ClearPageForeign(page) clear_bit(PG_foreign, &(page)->flags) #define PageForeignDestructor(page) \ ( (void (*) (struct page *)) (page)->mapping ) diff --git a/linux-2.6.7-xen-sparse/include/linux/skbuff.h b/linux-2.6.8.1-xen-sparse/include/linux/skbuff.h similarity index 90% rename from linux-2.6.7-xen-sparse/include/linux/skbuff.h rename to linux-2.6.8.1-xen-sparse/include/linux/skbuff.h index 37c4342b9b..ba4e27dbc5 100644 --- a/linux-2.6.7-xen-sparse/include/linux/skbuff.h +++ b/linux-2.6.8.1-xen-sparse/include/linux/skbuff.h @@ -27,6 +27,7 @@ #include #include #include +#include #define HAVE_ALLOC_SKB /* For the drivers to know */ #define HAVE_ALIGNABLE_SKB /* Ditto 8) */ @@ -155,6 +156,7 @@ struct skb_shared_info { * @sk: Socket we are owned by * @stamp: Time we arrived * @dev: Device we arrived on/are leaving by + * @input_dev: Device we arrived on * @real_dev: The real device we are using * @h: Transport layer header * @nh: Network layer header @@ -197,6 +199,7 @@ struct sk_buff { struct sock *sk; struct timeval stamp; struct net_device *dev; + struct net_device *input_dev; struct net_device *real_dev; union { @@ -230,7 +233,7 @@ struct sk_buff { * want to keep them across layers you have to do a skb_clone() * first. This is owned by whoever has the skb queued ATM. */ - char cb[48]; + char cb[40]; unsigned int len, data_len, @@ -262,9 +265,15 @@ struct sk_buff { } private; #endif #ifdef CONFIG_NET_SCHED - __u32 tc_index; /* traffic control index */ + __u32 tc_index; /* traffic control index */ +#ifdef CONFIG_NET_CLS_ACT + __u32 tc_verd; /* traffic control verdict */ + __u32 tc_classid; /* traffic control classid */ + #endif + #endif + /* These elements must be at the end, see alloc_skb() for details. */ unsigned int truesize; atomic_t users; @@ -663,13 +672,15 @@ static inline int skb_pagelen(const struct sk_buff *skb) return len + skb_headlen(skb); } -static inline void skb_fill_page_desc(struct sk_buff *skb, int i, struct page *page, int off, int size) +static inline void skb_fill_page_desc(struct sk_buff *skb, int i, + struct page *page, int off, int size) { skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; - frag->page = page; - frag->page_offset = off; - frag->size = size; - skb_shinfo(skb)->nr_frags = i+1; + + frag->page = page; + frag->page_offset = off; + frag->size = size; + skb_shinfo(skb)->nr_frags = i + 1; } #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) @@ -816,6 +827,30 @@ static inline void skb_reserve(struct sk_buff *skb, unsigned int len) skb->tail += len; } +/* + * CPUs often take a performance hit when accessing unaligned memory + * locations. The actual performance hit varies, it can be small if the + * hardware handles it or large if we have to take an exception and fix it + * in software. + * + * Since an ethernet header is 14 bytes network drivers often end up with + * the IP header at an unaligned offset. The IP header can be aligned by + * shifting the start of the packet by 2 bytes. Drivers should do this + * with: + * + * skb_reserve(NET_IP_ALIGN); + * + * The downside to this alignment of the IP header is that the DMA is now + * unaligned. On some architectures the cost of an unaligned DMA is high + * and this cost outweighs the gains made by aligning the IP header. + * + * Since this trade off varies between architectures, we allow NET_IP_ALIGN + * to be overridden. + */ +#ifndef NET_IP_ALIGN +#define NET_IP_ALIGN 2 +#endif + extern int ___pskb_trim(struct sk_buff *skb, unsigned int len, int realloc); static inline void __skb_trim(struct sk_buff *skb, unsigned int len) @@ -975,6 +1010,39 @@ static inline struct sk_buff *skb_padto(struct sk_buff *skb, unsigned int len) return skb_pad(skb, len-size); } +static inline int skb_add_data(struct sk_buff *skb, + char __user *from, int copy) +{ + const int off = skb->len; + + if (skb->ip_summed == CHECKSUM_NONE) { + int err = 0; + unsigned int csum = csum_and_copy_from_user(from, + skb_put(skb, copy), + copy, 0, &err); + if (!err) { + skb->csum = csum_block_add(skb->csum, csum, off); + return 0; + } + } else if (!copy_from_user(skb_put(skb, copy), from, copy)) + return 0; + + __skb_trim(skb, off); + return -EFAULT; +} + +static inline int skb_can_coalesce(struct sk_buff *skb, int i, + struct page *page, int off) +{ + if (i) { + struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1]; + + return page == frag->page && + off == frag->page_offset + frag->size; + } + return 0; +} + /** * skb_linearize - convert paged skb to linear one * @skb: buffer to linarize @@ -1038,10 +1106,28 @@ extern unsigned int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to, int len, unsigned int csum); extern void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to); +extern void skb_split(struct sk_buff *skb, + struct sk_buff *skb1, const u32 len); extern void skb_init(void); extern void skb_add_mtu(int mtu); +struct skb_iter { + /* Iteration functions set these */ + unsigned char *data; + unsigned int len; + + /* Private to iteration */ + unsigned int nextfrag; + struct sk_buff *fraglist; +}; + +/* Keep iterating until skb_iter_next returns false. */ +extern void skb_iter_first(const struct sk_buff *skb, struct skb_iter *i); +extern int skb_iter_next(const struct sk_buff *skb, struct skb_iter *i); +/* Call this if aborting loop before !skb_iter_next */ +extern void skb_iter_abort(const struct sk_buff *skb, struct skb_iter *i); + #ifdef CONFIG_NETFILTER static inline void nf_conntrack_put(struct nf_ct_info *nfct) { @@ -1053,6 +1139,14 @@ static inline void nf_conntrack_get(struct nf_ct_info *nfct) if (nfct) atomic_inc(&nfct->master->use); } +static inline void nf_reset(struct sk_buff *skb) +{ + nf_conntrack_put(skb->nfct); + skb->nfct = NULL; +#ifdef CONFIG_NETFILTER_DEBUG + skb->nf_debug = 0; +#endif +} #ifdef CONFIG_BRIDGE_NETFILTER static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge) @@ -1065,9 +1159,10 @@ static inline void nf_bridge_get(struct nf_bridge_info *nf_bridge) if (nf_bridge) atomic_inc(&nf_bridge->use); } -#endif - -#endif +#endif /* CONFIG_BRIDGE_NETFILTER */ +#else /* CONFIG_NETFILTER */ +static inline void nf_reset(struct sk_buff *skb) {} +#endif /* CONFIG_NETFILTER */ #endif /* __KERNEL__ */ #endif /* _LINUX_SKBUFF_H */ diff --git a/linux-2.6.7-xen-sparse/mkbuildtree b/linux-2.6.8.1-xen-sparse/mkbuildtree similarity index 100% rename from linux-2.6.7-xen-sparse/mkbuildtree rename to linux-2.6.8.1-xen-sparse/mkbuildtree diff --git a/linux-2.6.7-xen-sparse/mm/page_alloc.c b/linux-2.6.8.1-xen-sparse/mm/page_alloc.c similarity index 92% rename from linux-2.6.7-xen-sparse/mm/page_alloc.c rename to linux-2.6.8.1-xen-sparse/mm/page_alloc.c index 6671262ae0..166246de9a 100644 --- a/linux-2.6.7-xen-sparse/mm/page_alloc.c +++ b/linux-2.6.8.1-xen-sparse/mm/page_alloc.c @@ -38,7 +38,7 @@ DECLARE_BITMAP(node_online_map, MAX_NUMNODES); struct pglist_data *pgdat_list; unsigned long totalram_pages; unsigned long totalhigh_pages; -int nr_swap_pages; +long nr_swap_pages; int numnodes = 1; int sysctl_lower_zone_protection = 0; @@ -55,6 +55,9 @@ EXPORT_SYMBOL(zone_table); static char *zone_names[MAX_NR_ZONES] = { "DMA", "Normal", "HighMem" }; int min_free_kbytes = 1024; +static unsigned long __initdata nr_kernel_pages; +static unsigned long __initdata nr_all_pages; + /* * Temporary debugging check for pages not lying within a given zone. */ @@ -119,7 +122,7 @@ static void prep_compound_page(struct page *page, unsigned long order) int i; int nr_pages = 1 << order; - page[1].mapping = 0; + page[1].mapping = NULL; page[1].index = order; for (i = 0; i < nr_pages; i++) { struct page *p = page + i; @@ -176,20 +179,20 @@ static void destroy_compound_page(struct page *page, unsigned long order) */ static inline void __free_pages_bulk (struct page *page, struct page *base, - struct zone *zone, struct free_area *area, unsigned long mask, - unsigned int order) + struct zone *zone, struct free_area *area, unsigned int order) { - unsigned long page_idx, index; + unsigned long page_idx, index, mask; if (order) destroy_compound_page(page, order); + mask = (~0UL) << order; page_idx = page - base; if (page_idx & ~mask) BUG(); index = page_idx >> (1 + order); - zone->free_pages -= mask; - while (mask + (1 << (MAX_ORDER-1))) { + zone->free_pages += 1 << order; + while (order < MAX_ORDER-1) { struct page *buddy1, *buddy2; BUG_ON(area >= zone->free_area + MAX_ORDER); @@ -198,17 +201,15 @@ static inline void __free_pages_bulk (struct page *page, struct page *base, * the buddy page is still allocated. */ break; - /* - * Move the buddy up one level. - * This code is taking advantage of the identity: - * -mask = 1+~mask - */ - buddy1 = base + (page_idx ^ -mask); + + /* Move the buddy up one level. */ + buddy1 = base + (page_idx ^ (1 << order)); buddy2 = base + page_idx; BUG_ON(bad_range(zone, buddy1)); BUG_ON(bad_range(zone, buddy2)); list_del(&buddy1->lru); mask <<= 1; + order++; area++; index >>= 1; page_idx &= mask; @@ -252,12 +253,11 @@ static int free_pages_bulk(struct zone *zone, int count, struct list_head *list, unsigned int order) { - unsigned long mask, flags; + unsigned long flags; struct free_area *area; struct page *base, *page = NULL; int ret = 0; - mask = (~0UL) << order; base = zone->zone_mem_map; area = zone->free_area + order; spin_lock_irqsave(&zone->lock, flags); @@ -267,7 +267,7 @@ free_pages_bulk(struct zone *zone, int count, page = list_entry(list->prev, struct page, lru); /* have to delete it as __free_pages_bulk list manipulates */ list_del(&page->lru); - __free_pages_bulk(page, base, zone, area, mask, order); + __free_pages_bulk(page, base, zone, area, order); ret++; } spin_unlock_irqrestore(&zone->lock, flags); @@ -290,6 +290,20 @@ void __free_pages_ok(struct page *page, unsigned int order) #define MARK_USED(index, order, area) \ __change_bit((index) >> (1+(order)), (area)->map) +/* + * The order of subdivision here is critical for the IO subsystem. + * Please do not alter this order without good reasons and regression + * testing. Specifically, as large blocks of memory are subdivided, + * the order in which smaller blocks are delivered depends on the order + * they're subdivided in this function. This is the primary factor + * influencing the order in which pages are delivered to the IO + * subsystem according to empirical testing, and this is also justified + * by considering the behavior of a buddy system containing a single + * large block of memory acted on by a series of small allocations. + * This behavior is a critical factor in sglist merging's success. + * + * -- wli + */ static inline struct page * expand(struct zone *zone, struct page *page, unsigned long index, int low, int high, struct free_area *area) @@ -297,14 +311,12 @@ expand(struct zone *zone, struct page *page, unsigned long size = 1 << high; while (high > low) { - BUG_ON(bad_range(zone, page)); area--; high--; size >>= 1; - list_add(&page->lru, &area->free_list); - MARK_USED(index, high, area); - index += size; - page += size; + BUG_ON(bad_range(zone, &page[size])); + list_add(&page[size].lru, &area->free_list); + MARK_USED(index + size, high, area); } return page; } @@ -735,53 +747,12 @@ got_pg: EXPORT_SYMBOL(__alloc_pages); -#ifdef CONFIG_NUMA -/* Early boot: Everything is done by one cpu, but the data structures will be - * used by all cpus - spread them on all nodes. - */ -static __init unsigned long get_boot_pages(unsigned int gfp_mask, unsigned int order) -{ -static int nodenr; - int i = nodenr; - struct page *page; - - for (;;) { - if (i > nodenr + numnodes) - return 0; - if (node_present_pages(i%numnodes)) { - struct zone **z; - /* The node contains memory. Check that there is - * memory in the intended zonelist. - */ - z = NODE_DATA(i%numnodes)->node_zonelists[gfp_mask & GFP_ZONEMASK].zones; - while (*z) { - if ( (*z)->free_pages > (1UL<nr_active + zone->nr_inactive; - - return pages; -} - #ifdef CONFIG_NUMA unsigned int nr_free_pages_pgdat(pg_data_t *pgdat) { @@ -1267,7 +1227,7 @@ static void __init build_zonelists(pg_data_t *pgdat) DECLARE_BITMAP(used_mask, MAX_NUMNODES); /* initialize zonelists */ - for (i = 0; i < MAX_NR_ZONES; i++) { + for (i = 0; i < GFP_ZONETYPES; i++) { zonelist = pgdat->node_zonelists + i; memset(zonelist, 0, sizeof(*zonelist)); zonelist->zones[0] = NULL; @@ -1289,7 +1249,7 @@ static void __init build_zonelists(pg_data_t *pgdat) node_load[node] += load; prev_node = node; load--; - for (i = 0; i < MAX_NR_ZONES; i++) { + for (i = 0; i < GFP_ZONETYPES; i++) { zonelist = pgdat->node_zonelists + i; for (j = 0; zonelist->zones[j] != NULL; j++); @@ -1312,7 +1272,7 @@ static void __init build_zonelists(pg_data_t *pgdat) int i, j, k, node, local_node; local_node = pgdat->node_id; - for (i = 0; i < MAX_NR_ZONES; i++) { + for (i = 0; i < GFP_ZONETYPES; i++) { struct zonelist *zonelist; zonelist = pgdat->node_zonelists + i; @@ -1413,7 +1373,7 @@ static void __init calculate_zone_totalpages(struct pglist_data *pgdat, for (i = 0; i < MAX_NR_ZONES; i++) realtotalpages -= zholes_size[i]; pgdat->node_present_pages = realtotalpages; - printk("On node %d totalpages: %lu\n", pgdat->node_id, realtotalpages); + printk(KERN_DEBUG "On node %d totalpages: %lu\n", pgdat->node_id, realtotalpages); } @@ -1434,7 +1394,7 @@ void __init memmap_init_zone(struct page *start, unsigned long size, int nid, INIT_LIST_HEAD(&page->lru); #ifdef WANT_PAGE_VIRTUAL /* The shift won't overflow because ZONE_NORMAL is below 4G. */ - if (zone != ZONE_HIGHMEM) + if (!is_highmem_idx(zone)) set_page_address(page, __va(start_pfn << PAGE_SHIFT)); #endif start_pfn++; @@ -1474,6 +1434,10 @@ static void __init free_area_init_core(struct pglist_data *pgdat, if (zholes_size) realsize -= zholes_size[j]; + if (j == ZONE_DMA || j == ZONE_NORMAL) + nr_kernel_pages += realsize; + nr_all_pages += realsize; + zone->spanned_pages = size; zone->present_pages = realsize; zone->name = zone_names[j]; @@ -1515,12 +1479,12 @@ static void __init free_area_init_core(struct pglist_data *pgdat, pcp->batch = 1 * batch; INIT_LIST_HEAD(&pcp->list); } - printk(" %s zone: %lu pages, LIFO batch:%lu\n", + printk(KERN_DEBUG " %s zone: %lu pages, LIFO batch:%lu\n", zone_names[j], realsize, batch); INIT_LIST_HEAD(&zone->active_list); INIT_LIST_HEAD(&zone->inactive_list); - atomic_set(&zone->nr_scan_active, 0); - atomic_set(&zone->nr_scan_inactive, 0); + zone->nr_scan_active = 0; + zone->nr_scan_inactive = 0; zone->nr_active = 0; zone->nr_inactive = 0; if (!size) @@ -1868,7 +1832,7 @@ static void setup_per_zone_protection(void) * For each of the different allocation types: * GFP_DMA -> GFP_KERNEL -> GFP_HIGHMEM */ - for (i = 0; i < MAX_NR_ZONES; i++) { + for (i = 0; i < GFP_ZONETYPES; i++) { /* * For each of the zones: * ZONE_HIGHMEM -> ZONE_NORMAL -> ZONE_DMA @@ -1994,9 +1958,9 @@ module_init(init_per_zone_pages_min) * changes. */ int min_free_kbytes_sysctl_handler(ctl_table *table, int write, - struct file *file, void __user *buffer, size_t *length) + struct file *file, void __user *buffer, size_t *length, loff_t *ppos) { - proc_dointvec(table, write, file, buffer, length); + proc_dointvec(table, write, file, buffer, length, ppos); setup_per_zone_pages_min(); setup_per_zone_protection(); return 0; @@ -2008,9 +1972,75 @@ int min_free_kbytes_sysctl_handler(ctl_table *table, int write, * whenever sysctl_lower_zone_protection changes. */ int lower_zone_protection_sysctl_handler(ctl_table *table, int write, - struct file *file, void __user *buffer, size_t *length) + struct file *file, void __user *buffer, size_t *length, loff_t *ppos) { - proc_dointvec_minmax(table, write, file, buffer, length); + proc_dointvec_minmax(table, write, file, buffer, length, ppos); setup_per_zone_protection(); return 0; } + +/* + * allocate a large system hash table from bootmem + * - it is assumed that the hash table must contain an exact power-of-2 + * quantity of entries + */ +void *__init alloc_large_system_hash(const char *tablename, + unsigned long bucketsize, + unsigned long numentries, + int scale, + int consider_highmem, + unsigned int *_hash_shift, + unsigned int *_hash_mask) +{ + unsigned long mem, max, log2qty, size; + void *table; + + /* round applicable memory size up to nearest megabyte */ + mem = consider_highmem ? nr_all_pages : nr_kernel_pages; + mem += (1UL << (20 - PAGE_SHIFT)) - 1; + mem >>= 20 - PAGE_SHIFT; + mem <<= 20 - PAGE_SHIFT; + + /* limit to 1 bucket per 2^scale bytes of low memory (rounded up to + * nearest power of 2 in size) */ + if (scale > PAGE_SHIFT) + mem >>= (scale - PAGE_SHIFT); + else + mem <<= (PAGE_SHIFT - scale); + + mem = 1UL << (long_log2(mem) + 1); + + /* limit allocation size */ + max = (1UL << (PAGE_SHIFT + MAX_SYS_HASH_TABLE_ORDER)) / bucketsize; + if (max > mem) + max = mem; + + /* allow the kernel cmdline to have a say */ + if (!numentries || numentries > max) + numentries = max; + + log2qty = long_log2(numentries); + + do { + size = bucketsize << log2qty; + + table = (void *) alloc_bootmem(size); + + } while (!table && size > PAGE_SIZE); + + if (!table) + panic("Failed to allocate %s hash table\n", tablename); + + printk("%s hash table entries: %d (order: %d, %lu bytes)\n", + tablename, + (1U << log2qty), + long_log2(size) - PAGE_SHIFT, + size); + + if (_hash_shift) + *_hash_shift = log2qty; + if (_hash_mask) + *_hash_mask = (1 << log2qty) - 1; + + return table; +} -- 2.30.2